美文网首页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