sql

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

2019-12-17  本文已影响0人  初心myp
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()
上一篇 下一篇

猜你喜欢

热点阅读