稀土掘金 稀土掘金

MySQL中的insert into 与replace into用法和区别

我们先来看下MySQL官网对于两者的解释:

然后用一个小实例简单说明下:

replace into 和insert into都是基于唯一索引或主键基础上使用的,必须有主键或唯一索引

首先创建一张test表

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` bigint(20) NOT NULL COMMENT '主键ID',
  `name` varchar(50) DEFAULT NULL,
  `phone` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试表';

执行单条语句测试

--执行单条数据的insert into
[SQL]INSERT INTO test (id, NAME, phone) VALUES('1', '张三', '13810597914');
受影响的行: 1
时间: 0.024s

--执行单条数据的replace into
[SQL]REPLACE INTO test (id, NAME, phone) VALUES('2', '李四', '13810597915');
受影响的行: 1
时间: 0.023s

由上可见: 当主键和唯一索引 'id' 列不重复,两者执行时间及影响行数(插入的方式)基本等同

--再来看看主键重复的情况 
--1、执行insert into
[SQL]INSERT INTO test (id, NAME, phone) VALUES('2', '李四san', '13810597915');
[Err] 1062 - Duplicate entry '2' for key 'PRIMARY'

--2、执行replace into
[SQL]REPLACE INTO test (id, NAME, phone) VALUES('2', '李四san', '13810597915');
受影响的行: 2
时间: 0.026s

可以看到inset into是不允许添加主键重复列的,而replace可以,且影响行数是2,再结合MySQL官网的文档解释是不是就清晰了,replace into用于不知道操作为更新还是新增的时候,使用时,先尝试直接向库中插入数据,遇到主键或唯一索引而引发的重复键错误时,删除掉冲突行并再次尝试插入,这个过程是MySQL自行处理的,并不会存在用户感知之类的

再说下MySQL replace into 的三种使用形式:

  1. replace into test(id,name ...) values(...)

  2. replace into test(id,name, ...) select ...

  3. replace into test set id=value, name=value,...

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

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

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

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

最后总结一下吧:

replace into执行过程主键冲突总是删除后插入新记录

replace into主键相同,主键之外字段会得到更新,主键不同功能同insert into

replace into和insert into区别在于insert into插入与主键相同记录会报错而前者不会

玻璃钢生产厂家河南大型商场美陈批发泗县玻璃钢花盆花器威海广场玻璃钢雕塑价格陕西景观玻璃钢雕塑市场沈阳水果玻璃钢雕塑毕节玻璃钢雕塑厂家电话新年商场大门美陈玻璃钢壁画雕塑景观园林玻璃钢景观雕塑定制开封制作玻璃钢雕塑产品报价阳江玻璃钢熊猫雕塑枣庄市玻璃钢人物雕塑批发价格江苏室内商场美陈销售厂家创新玻璃钢花盆绿植海南玻璃钢海豚雕塑新余多彩玻璃钢雕塑枣强玻璃钢雕塑公园天津玻璃钢香蕉雕塑邵通玻璃钢商场美陈定做玻璃钢雕塑价格烟台制造玻璃钢座椅雕塑包头玻璃钢雕塑订制价格楚雄市玻璃钢雕塑费用马鞍山景区玻璃钢雕塑河南特色商场美陈福建超市商场美陈市场玻璃钢雕塑喷汽车漆玻璃钢游戏人物雕塑价格深圳玻璃钢校园雕塑河北玻璃钢仿真水果雕塑定制香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化