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 演示操作
①主键存在的时候(这里面的操作有点出乎意料了)
- 主键存在时候前面的insert部分自然不会直接执行的,所以会去执行后面update操作
- 后面的update操作本以为只能操作除了主键之外的数据,但是实际上是把你能写到数据全部更新了,也是6的很
② 主键不存在的情况就是直接插入数据了
还是需要总结一下的:
replace 看样子是做了删除操作之后整个数据全部插入 delete and then insert
duplicate 看这样子是做了插入或者是更新 inster or update
最后唠叨一下:
欢迎访问交流群:589780530
博主交流:2718272293
邮箱:2718272293@qq.com licunzhi2@gmail.com
github: https://github.com/licunzhi