1、insert ignore into
ignore不仅会忽略duplicate key(重复primary或者unique)错误,还会忽略非空错误,如果插入语句没有给予非空字段值,则会给默认值,int类型默认0,varchar默认‘’ 空字符串,此时,可以使用on duplicate key value(MySQL中特有的语法),当主键或唯一索引重复时,执行后面的update,例如:phone是唯一索引
insert into student(name, age, phone) values('风云',25, 345)on duplicate key update phone= phone;
2.replace into
如果存在primary or unique相同的记录,则先删除掉。再插入新记录。如果记录有多个字段,在插入的时候如果有的字段没有赋值,那么新插入的记录这些字段为空。
REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books
对表进行replace into操作的时候,
当不存在冲突时,replace into 相当于insert操作。
当存在pk冲突的时候是先delete再insert,如果主键是自增的,则自增主键会做 +1 操作。
当存在uk冲突的时候是直接update。,如果主键是自增的,则自增主键会做 +1 操作。