mysql中replace into 和 Insert into on duplicate key update

replace into                         Insert into on duplicate key update

两个操作在插入的数据主键不存在的情况下没有实际上的区别(不做无图狗,必须用图片说明操作

区别是啥呢,当然是主键存在的情况了:
replace into  在主键存在的情况下会把所有除了主键的数据全部替换(这是判断依据,自然没法修改)成新的数据(没有的属性会自动设置为默认属性)
insert into on duplicate key update  在主键存在的情况下会把要修改的属性字段替换掉,不在修改范围的字段不做操作
简单来说就是所谓的全部更新和部分更新的区别啦

 

举例说明:

a 创建测试的数据库如下

b 插入一个新的数据insert into user(id, name, password) values('dream_on_sakura_rain', 'sakura', 'xiaozhuti')

c replace into 操作演示

①插入主键不存在的数据,会新增一个数据信息

②插入主键存在的数据,更新除了主键之外的所有属性数据

d insert into on duplicate key update 演示操作

①主键存在的时候(这里面的操作有点出乎意料了)

  1. 主键存在时候前面的insert部分自然不会直接执行的,所以会去执行后面update操作
  2. 后面的update操作本以为只能操作除了主键之外的数据,但是实际上是把你能写到数据全部更新了,也是6的很

② 主键不存在的情况就是直接插入数据了

 

还是需要总结一下的:

replace 看样子是做了删除操作之后整个数据全部插入    delete  and then insert

duplicate 看这样子是做了插入或者是更新  inster or update

 

 

最后唠叨一下:

欢迎访问交流群:589780530 
博主交流:2718272293
邮箱:2718272293@qq.com  licunzhi2@gmail.com
github: https://github.com/licunzhi

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值