mysql中replaceinto和Insertin

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: github.com/licunzhi