MySQL中的insert ignore into 和 insert into 使用方式

最近看一个中间件源码中使用到insert ignore into 保存数据的方式。

insert ignore into : 忽略重复的记录,直接插入数据。

包括两种场景:

1、插入的数据是主键冲突时

insert ignore into会给出warnings,show warnings就可以看到提示主键冲突;并且本次插入无效。

如果使用insert into语句时,如果主键冲突直接报错。

2、没有主键冲突时,直接插入数据

insert into 与 insert ignore into 都是直接插入数据

下面是准备测试数据:

复制代码
# 准备表
create table t_user(id int primary key, name varchar(50));
# 第一次执行
insert into t_user values(1, "aaa"), (2, "bbb"), (3, "ccc");
# 执行结果
# insert into t_user values(1, "aaa"), (2, "bbb"), (3, "ccc")
#> Affected rows: 3
#> 时间: 0.01s

select * from t_user;
# 执行结果
id | name
1    aaa
2    bbb
3    ccc
# 第二次执行
insert into t_user values(1, "aaa"), (2, "bbb"), (3, "ccc");
# 执行结果
#insert into t_user values(1, "aaa"), (2, "bbb"), (3, "ccc")
#> 1062 - Duplicate entry '1' for key 't_user.PRIMARY'
#> 时间: 0s

# 第一次执行
insert ignore into t_user values(4, "aaa"), (5, "bbb"), (6, "ccc");
# 执行结果
# insert ignore into t_user values(4, "aaa"), (5, "bbb"), (6, "ccc")
# > Affected rows: 3
# > 时间: 0.01s
select * from t_user;
# 执行结果
id | name
1    aaa
2    bbb
3    ccc
4    aaa
5    bbb
6    ccc
# 第二 次执行
insert ignore into t_user values(4, "aaa"), (5, "bbb"), (6, "ccc");
# 执行结果
# insert ignore into t_user values(4, "aaa"), (5, "bbb"), (6, "ccc")
# > Affected rows: 0
# > 时间: 0s
相关推荐
IT_陈寒3 分钟前
SpringBoot 项目启动慢?这5个优化技巧让你的应用快50%
前端·人工智能·后端
splage6 分钟前
Spring Framework 中文官方文档
java·后端·spring
曾阿伦7 分钟前
SQL 用法详解:从基础操作到进阶实战的全场景指南
数据库·sql
ew452187 分钟前
【SQL】DISTINCT 与 GROUP BY 核心区别及常见误区、问题全梳理
sql·mysql
阿里云大数据AI技术16 分钟前
EMR Serverless Spark 携手 PAI/百炼,开启“SQL 即 AI”的新篇章
sql·阿里云·spark·serverless·pai
晨非辰25 分钟前
Linux终端输出哲学:从回车换行到进度条实战,掌握缓冲区刷新与ANSI控制,告别输出延迟焦虑
linux·运维·服务器·c++·人工智能·后端·自动化
Meepo_haha27 分钟前
python的sql解析库-sqlparse
数据库·python·sql
回到原点的码农40 分钟前
Spring Boot 热部署
java·spring boot·后端
Seven971 小时前
揭秘MySQL索引分类
mysql
源码站~1 小时前
基于 Flask 的电影评分与票房关联分析系统
后端·python·flask