mysql中replace怎么用

小编给大家分享一下mysql中replace怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条replace语句相当于执行了一条delete和insert语句。直接上实例吧:

新建一个test表,三个字段,id,title,uid,  id是自增的主键,uid是唯一索引;

CREATE TABLE `test` (
 `Id` int(11) NOT NULL AUTO_INCREMENT,
 `title` varchar(25) DEFAULT NULL COMMENT '标题',
 `uid` int(11) DEFAULT NULL COMMENT 'uid',
 PRIMARY KEY (`Id`),
 UNIQUE KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

insert into test(title,uid) VALUES ('你好','1');
insert into test(title,uid) VALUES ('国庆节','2');

结果如下:

使用 replace into插入数据时:

REPLACE INTO test(title,uid) VALUES ('这次是8天假哦','3');

当uid存在时,使用replace into 语句

REPLACE INTO test(title,uid) VALUES ('这是Uid=1的第一条数据哦','1');

没有预料到 MySQL 在数据冲突时(也就是uid发生重复数据时)实际上是删掉了旧记录,再写入新记录,。通过以上实例,相信博友们可以看出:

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,

 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

MySQL replace into 有三种形式:

1. replace into tbl_name(col_name, ...) values(...)

2. replace into tbl_name(col_name, ...) select ...

3. replace into tbl_name set col_name=value, ...

第一种形式类似于insert into的用法,

第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。

第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。

前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。

以上是“mysql中replace怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注本站行业资讯频道!

相关推荐:

mysql binlog中QUERY_EVENT的status_var结构

导读 我们两年前有讲过query_event的结构, 但对于其中的status_var讲得比较浅. 所以本次来完善完善,为后面的使用打下基础. QUERY_EVENT = 2 明文的SQL,ROW模式下通常是DDL,STATEMENT就主要是DML了. 官方文档里面的名字和mysqlbinlog解析出来的名字有区别的, 我就按照mysqlbinlog解析的名字来(更好理解) 对象 大小 描述 th...

mysql索引原理及使用

MySQL索引是一种使用B树数据结构组织数据的结构,通过绕过行扫描直接定位所需数据,提高检索速度。索引适用于数据量大且经常按条件查询的情况。MySQL支持多种索引类型,包括B-Tree、哈希、全文和空间索引,可根据查询模式合理选择。索引的优点包括提高查询速度、减少服务器开销和改善查询计划,但要注意其存储空间占用和维护开销,避免过度索引。 MySQL 索引原理 索引是 MySQL 中一种重要的数据结...

php mysql使用

PHP 连接 MySQL 数据库时需:1. 安装 MySQL PHP 扩展;2. 创建与服务器的连接;3. 选择要连接的数据库;4. 执行 SQL 查询;5. 处理查询结果;6. 关闭连接。 PHP 连接 MySQL 数据库 如何连接 MySQL 数据库? 使用 PHP 连接 MySQL 数据库的步骤如下: 安装 MySQL PHP 扩展:在 PHP 服务器上安装 MySQL PHP 扩展。 创建...

hive 使用上与mysql区别

Hive 和 MySQL 的主要区别在于:数据存储:Hive 存储数据在 HDFS 中,而 MySQL 存储在表中。数据模型:Hive 支持扁平模型,MySQL 支持关系模型。数据处理:Hive 用于批处理,MySQL 用于交互查询。并发性:MySQL 支持并发,而 Hive 不支持。可扩展性:Hive 具有高可扩展性,而 MySQL 的可扩展性有限。 Hive 与 MySQL 的主要区别 Hiv...

mysql数据类型及使用

MySQL 提供多种数据类型:数值类型:INT、FLOAT、DOUBLE字符串类型:CHAR、VARCHAR、TEXT日期和时间类型:DATE、TIME、TIMESTAMP二进制类型:BINARY、VARBINARY枚举类型:ENUM集合类型:SETJSON类型:JSON MySQL 数据类型 MySQL 提供广泛的数据类型以支持各种数据需求。选择正确的数据类型对于确保数据完整性、优化存储空间和提...

如何使用mysql引I擎

InnoDB 引擎是 MySQL 中用于处理事务性数据的存储引擎,支持事务、ACID 兼容性、行锁、回滚段和外键支持。要使用 InnoDB,请在创建数据表时指定 ENGINE=InnoDB。其优点包括高性能、事务支持、行锁、回滚段和外键支持;要注意的缺点包括开销、表空间和内存使用。 如何使用 MySQL InnoDB 引擎 什么是 InnoDB 引擎? InnoDB 是 MySQL 数据库中的一种...

mysql中的锁机制是什么_mysql锁机制基础说明

MySQL锁机制是数据库协调并发事务的核心手段,旨在保障隔离性与一致性;它由存储引擎自动加锁/释放,按粒度分为表锁、行锁、间隙锁,按模式分为共享锁(S)和排他锁(X),并引入意向锁(IS/IX)协同多粒度锁。 MySQL锁机制是数据库用来协调多个事务并发访问同一资源的核心手段,核心目标是保障事务的隔离性与数据一致性。它不是靠用户手动控制全部流程,而是由存储引擎在执行SQL时自动加锁、事务结束时自动...

什么是mysql备份_mysql备份基本概念

MySQL备份是为应对删库、误操作等故障而将数据、结构、binlog及配置等复制保存的过程;需覆盖数据库对象、实际数据、关键日志和环境信息,分逻辑/物理、全量/增量两类,且必须满足一致性、可验证性、异地多副本三大硬条件。 MySQL备份,就是把数据库里的数据、表结构、配置信息甚至二进制日志等,复制一份保存到其他位置的过程。核心目的不是“存起来”,而是确保在删库、误操作、磁盘损坏或服务崩溃时,能快速...