美文网首页sql
mysql的三种常用的插入方法(三种防止数据重复插入的方式)

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

作者: 初心myp | 来源:发表于2019-12-17 14:34 被阅读0次
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()

相关文章

网友评论

    本文标题:mysql的三种常用的插入方法(三种防止数据重复插入的方式)

    本文链接:https://www.haomeiwen.com/subject/dndsnctx.html