SQL中replace into和on duplicate key update的区别

1,replace into
2,on duplicate key update

一,两者在数据库中无记录时都执行插入操作;在数据库中有记录时都执行“更新”操作。
二,二者在判断有无记录时,都是根据表里的主键或唯一索引。
三,检索到存在记录时,1是先删除原记录,再插入新记录;而2是保持原记录不变,更新指定的字段。

如表中有如下记录,其中id是自增主键,col1是唯一索引:
(id, col1, col2,col3)= (1, a,b,c)

执行
raplace in tabelname(col1, col2) values (a,d)
则表中数据变为
(id, col1, col2,col3)= (2, a,d,null)
原记录完全删除,id发生自增。

执行
insert into tablename(col1) values (a)
on duplicate key update col2=d

则表中数据变位
(id, col1, col2,col3)= (1, a,d,c)
col3保持不变,id未自增,不过在插入下一条记录时,id会跳跃。

你可能感兴趣的:(sql,数据库,索引)