1. replace into
replace into table table_name ....
//insert into 语法差不多
功能:如果有记录存在就以新的值插入
注意: 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;插入数据的表必须有主键或者是唯一索引,否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
2. insert ignore into
insert ignore into table table_name ....
//insert into 语法差不多
功能:会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过当前插入的这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
注意:插入数据的表必须有主键或者是唯一索引
3. insert into … on duplicate key update …
举个例子:
INSERT INTO TABLE (COL1,COL2,COL3) VALUES("123","456","789") ,("987","654","321")
ON DUPLICATE KEY UPDATE COL3=VALUES(COL2)
//COL3=VALUES(COL2),这个values就会取我们插入的新值
功能:当插入数据时,如果唯一性校验就是(插入数据的表必须有主键或者是唯一索引)出现重复问题,则在原有记录基础上,更新指定字段内容,其它字段内容保留;如果没有重复性问题,则执行插入操作。
使用场景总结:
-
如果出现重复异常,希望捕获异常,则使用insert into -
如果出现重复异常,希望保存旧纪录,忽略新纪录,则使用insert ignore into -
如果出现重复异常,希望更新指定字段,则使用insert into … on duplicate key update -
如果出现重复异常,希望删除旧记录,插入新记录,则使用replace into
|