replace into                         Insert into on duplicate key update

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

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

 

举例说明:

a 创建测试的数据库如下

mysql中replace into 和 Insert into on duplicate key update

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

mysql中replace into 和 Insert into on duplicate key update

c replace into 操作演示

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

mysql中replace into 和 Insert into on duplicate key update

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

mysql中replace into 和 Insert into on duplicate key update

d insert into on duplicate key update 演示操作

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

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

mysql中replace into 和 Insert into on duplicate key update

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

mysql中replace into 和 Insert into on duplicate key update

 

还是需要总结一下的:

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

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

 

 

最后唠叨一下:

欢迎访问交流群:589780530 
博主交流:2718272293
邮箱:[email protected]  [email protected]
github: https://github.com/licunzhi

相关文章:

  • 2021-10-30
  • 2021-11-17
  • 2022-01-27
  • 2021-10-22
  • 2021-10-31
  • 2022-02-26
  • 2021-08-23
  • 2021-12-02
猜你喜欢
  • 2022-03-02
  • 2021-04-17
  • 2021-06-07
  • 2022-02-14
  • 2021-07-27
  • 2021-05-24
  • 2021-06-01
相关资源
相似解决方案