首页 > mysql > mysql中数据插入的四种模式
2017
06-04

mysql中数据插入的四种模式

简介


数据插入的四种模式:Insert into,Replace Into,Insert ignore,on duplicate key update


四种模式的区别


1、insert into 最普遍的插入,如果表中存在主键相同的数据,执行会报错。
2、replace into 如果表中存在与主键相同的数据,则替换掉该主键的记录,反之则插入(存在就替换,反之插入)
3、insert ignore  如果表中存在主键相同的数据不在插入该条数据,反之则插入(存在则忽略,反之插入)
4、insert into *** on duplicate key update 如果表中存在该记录,则按新的数据进行修改,不存在则插入。


Replace into 与Insert into on duplicate key update真正的不同之处


若表中的一个旧记录与一个用于PRIMARY KEY 或 一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。


相同点

(1)没有key的时候,replace与insert .. on deplicate udpate相同。

(2)有key的时候,auto_increment自动+1,但是主键保持不变。


不同点

 有key的时候,replace是delete老记录,而录入新的记录,所以原有的所有记录会被清除,这个时候,如果replace语句的字段不全的话,有些原有的比如例子中c字段的值会被自动填充为默认值。

 

  而insert .. deplicate update则只执行update标记之后的sql,从表象上来看相当于一个简单的update语句。保留了所有字段的旧值,再覆盖然后一起insert进去,而replace没有保留旧值,直接删除再insert新值。

 

 从底层执行效率上来讲,replace要比insert .. on deplicate update效率要高,但是在写replace的时候,字段要写全,防止老的字段数据被删除。


本文》有 0 条评论

留下一个回复