mysql的三种常用的插入方法(三种防止数据重复插入的方式)

1. INSERT INTO

insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;

2. INSERT IGNORE

insert ignore 如果存在数据,那么则忽略新数据。也是mysql三种防止重复插入数据的方式之一

3. REPLACE INTO

replace into 表示插入替换数据,表中如果有PrimaryKey或者unique索引的话,数据库如果已存在数据,则用新数据替换,如果没有数据则和insert into一样。也是mysql三种防止重复插入数据的方式之一

replace语句返回一个数,指的是受影响的数据条数。该数指的是删除和插入一共影响的数据条数,如果返回1,说明没有数据,只进行一次插入操作。如果返回的大于1,说明删除了数据之后,在进行插入的。由于唯一索引的原因,可能执行一次操作会影响多少数据。也就是删除多条,然后插入一条新数据。

下图为演示效果,id为主键(PrimaryKey)

INSERT INTO `level_user` (id,level_id,user_code,create_time,create_code) VALUES(1,1,1,NOW(),'ceshi')

第一次执行:



第二次执行:因为主键已存在,抛出异常



目前数据库的数据结果:

INSERT IGNORE `level_user` (id,level_id,user_code,create_time,create_code) VALUES(1,1,1,NOW(),'ceshi')

在上面结果基础上在执行第二条sql,执行成功了,但是受影响数据条数为0,说明没有更新



此时数据库的数据结果:结果没有任何改变。


REPLACE INTO `level_user` (id,level_id,user_code,create_time,create_code) VALUES(1,3,3,NOW(),'ceshi')

在上面结果基础上在执行第三条sql,执行成功了,受影响条数为2,说明删除了之后然后进行插入的,数据已经变了



此时数据库的数据结果:结果已经发生改变。


第三种mysql防止重复插入数据的方式:ON DUPLICATE KEY UPDATE
根据唯一主键或者唯一索引,如果没有数据则插入,如果存在数据,则可以根据自己的情况更新某些值,sql举例如下:

INSERT INTO `level_user` (id,level_id,user_code,create_time,create_code)
VALUES(1,1,1,NOW(),'ceshi')
ON DUPLICATE KEY UPDATE
create_time=NOW()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容