mysql中replace into 和 Insert into on duplicate key update

版权声明:dream_on_sakura_rain https://blog.csdn.net/qq_32112175/article/details/82682048

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
邮箱:[email protected]  [email protected]
github: https://github.com/licunzhi

猜你喜欢

转载自blog.csdn.net/qq_32112175/article/details/82682048