mysql数据库添加数据语句怎么写_mysql中多种插入数据的语句

摘抄自:https://yjclsx.blog.csdn.net/article/details/83898545

mysql中常用的三种插入数据的语句

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

replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

insert ignore into表示如果已经存在相同的记录,比如主键或者唯一性字段冲突,则忽略当前新数据;

还有一种和replace into功能类似的语句:insert into ... on duplicate key update,他们的区别如下。

Replace into与Insert into ... on duplicate key update的区别

相同点:

(1)没有存在冲突的时候,replace into与insert into ... on duplicate key update相同,就是插入一条新的数据,返回的影响行数是1。

(2)存在冲突的时候,都会用新数据替换老数据,返回的影响行数是2。

(3)都支持批量更新,当插入的多条数据中有冲突时,会更新其中冲突的那几条。例如 replace into table (col_1,col_2) values ('v1','v2'),('v3','v4'),('v5','v6'); 和 insert into table (col_1,col_2) values ('v1','v2'),('v3','v4'),('v5','v6') on duplicate key update col_1=VALUES(col_1),col_2=VALUES(col_2);

不同点:

存在冲突的时候,replace into是delete老记录,然后录入新的记录,所以原有的所有记录会被清除,这个时候,如果replace into语句的字段不全的话,有些原有的字段的值会被自动填充为默认值,

同时AUTO_INCREMENT的主键会自动+1。

而insert into ... on duplicate key update则只执行update标记之后的sql,从表象上来看相当于一个简单的update语句,所以他保留了所有未修改的字段的旧值。

从底层执行效率上来讲,replace into要比insert into ... on duplicate key update效率要高,但是在写replace into的时候,字段要写全,防止老的字段数据被删除。

在实际工作中,经常会需要saveOrUpdate的操作,这时候通常使用的是insert into ... on duplicate key update,以保留未修改的数据。

提高插入性能

注意,当插入的数据量很大时,为了提高插入的性能:

1、可以批量插入VALUES,就是一个values跟很多条数据,每条数据用英文逗号隔开,最后一条才用分号,而不是每一次插入都是一条数据。

如:insert into table (col_1,col_2) values ('v1','v2'),('v3','v4'),('v5','v6');

这个效果提升地很明显,以前地区表有几万条数据,一条条insert要几分钟,用了批量插入values,瞬间就完成了!

2、删除MySQL的索引,有索引的存在,插入速度会受很大的影响。

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

weixin_39621794

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值