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 @   温故纳新  阅读(413)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示