mysql 插入更新数据

12 篇文章 0 订阅

insert into

insert into 语句进行插入时,如果插入的字段包含 主键或者唯一索引字段,那么,

1)主键或唯一索引 已存在,则插入失败 1062 - Duplicate entry '1' for key 'PRIMARY'

2)只有主键或者唯一索 引不存在时,才能插入成功

存在则抛异常,不存在则插入成功

insert  ignore  into

insert  gnore  into 语句进行插入时, 如果插入的字段包含 主键或者唯一索引字段,那么,

1)主键或唯一索引 已存在,则不插入,返回 Affected rows: 0,不会报错

2)只有主键或者唯一索 引不存在时,会插入成功

存在则忽略,不存在则插入成功

replace into

 replace  into 语句进行插入时, 如果插入的字段包含 主键或者唯一索引字段,那么,

1)主键或唯一索引 已存在,则删除已存在的记录,插入新的记录,Affected rows: 2

2)主键或唯一索引 不存在,则直接插入

存在则删除后插入,不存在则直接插入

insert into  on duplicate key update column1=value1,column2=value2

当前插入方式:

1)如果主键或者唯一索引已存在:

        a:  如果已存在的记录中的 字段 和  后面的 update 字段 值相同,则不更新,影响行数:0

        b: 如果已存在的记录中的 字段 和  后面的 update 字段 值 不 相同,则删除已有记录,重新插入新的记录,新的记录中,使用 update 字段的值,影响行数:2

2)如果主键或者唯一索引不存在,则直接插入行,影响行数:1

存在 并且 不需要更新,则忽略;存在 并且需要更新,则删除记录并根据新值插入;不存在则直接插入

需要根据具体的业务场景来选择,一般都是 先 select,如果存在,则通过 upate 来更新指定字段,很少 利用 replace into 或者 insert into on duplicate key update 来操作,如果是唯一索引字段已存在,那么这两种都是会删除原来的行 再插入新的行,如果表的主键id 是增的话,岂不是 就变了。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值