MySQL replace into 和 on duplicate key update 区别

1 replace into

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 
1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 
2. 否则,直接插入新数据。
replace into 会给未显式指定列的值覆盖为新的列默认值
-- 创建测试表
create table T20220429_ReplaceInto
(
Id int primary key comment 'Id',
Name varchar(20) comment '名字',
Age int comment '年龄',
Addr varchar(20) comment '地址',
Msg varchar(20) DEFAULT '默认值'
);

 

 

 执行 replace into

 

 

 

 

 

 2 on duplicate key update

如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
-- 创建测试表
create table T20220429_OnDuplicateKeyUpdate
(
Id int primary key comment 'Id',
Name varchar(20) comment '名字',
Age int comment '年龄',
Addr varchar(20) comment '地址',
Msg varchar(20) DEFAULT '默认值'
);


insert into T20220429_OnDuplicateKeyUpdate(Id,Name,Age,Addr,Msg)
values(1,'n1',10,'a1','Msg1');

 

 

 

 

 

 

 

posted @ 2022-04-29 13:36  温故纳新  阅读(387)  评论(0编辑  收藏  举报