mysql存在就替换没有就更新_mysql replace into 实现存在则更新,不存在则插入

本文通过实例介绍了MySQL的REPLACE INTO语句,详细讲解了在不同冲突情况下如何处理数据,包括主键冲突和唯一约束冲突的情况。总结来说,REPLACE INTO会先检查冲突,然后删除冲突数据,再插入新数据,效果类似INSERT INTO但会覆盖已有记录。
摘要由CSDN通过智能技术生成

测试用的mysql数据库:

新建测试表:

CREATE TABLE `test` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`text` varchar(255) DEFAULT NULL,

`uid` varchar(11) DEFAULT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `uid_unique` (`uid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

以上建表三个字段,id是主键自增,bigint类型。uid是字符串,但是加上了唯一约束’uid_unique‘。

(1) 添加新的数据

a401888a3e740a75a931b6271e0e2a9d.png

因为库里面没有新的数据,所以肯定是产生一条数据。

a0e493b3be304da520a0dffdce669589.png

(2) 产生一条新的数据,和 id 以及 uid都不冲突的

63e150ddac4d7144aaf248d51f6f794e.png

这个时候,因为id是主键自增的,所以这个时候,会产生一个次于最大值的值,就是1002

acea0fd57cd4e213c160e76736f1a397.png

(3)现在测试 id冲突,但是 uid不冲突的

9f665323bc3a1346d5ead3e9f75d5a07.png

0d5641227946b6b8eec291089ceba297.png

发现会以id为 依据进行替换。

(4)测试uid冲突,但是id不冲突的。

9f0b1cb9bfcca97aa7ab74da4b20490c.png

结果:

704649cfce0cbbce77e82fda1c91c193.png

发现会根据uid进行替换。

(5)当id和uid都冲突的时候

b8e9b145becf74d17ee8bd7cec8d059c.png

f3eb028cb6f0e6bab072096e9b5b10cb.png

发现会根据这些进行替换。

(6)当uid冲突的时候,且自增主键,id为空的时候

8b6fa0e18e1fd3ab6cd565f1da6bce3a.png

04dec04942cb3aeb265c079958b7fca3.png

发现这个时候会删除这条信息,然后新生成一个id。

综上所述,总的来说replace into 操作的结果是: 首先会判断是否存在冲突,可以是主键冲突,也可以是唯一约束。 然后删除这些数据,然后再插入数据。删除数据后插入的效果就跟insert into是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值