本篇博文是本人在多个渠道收集到的有关MySQL的零碎知识点的整理,包括但不仅限于CSDN,简书,微信公众号等各种渠道。甚至有些文章无法考证原创作者。故在此标记为原创,如有侵权行为请联系:bbxylqf@126.com,本人在收到消息后会第一时间删除相应内容。
MySQL数据库4种方式避免重复插入数据
最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常
准备工作
新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引
ALTER TABLE t_user ADD UNIQUE (username)
insert ignore into
即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引
insert ignore into t_user(username,sex,address) values("Christy","male","HeFei")
将上述SQL语句连续执行多次,可以发现数据只有一条而不会报错
on duplicate key update
即插入数据时,如果数据存在,则执行更新操作,前提条件是插入的数据字段设置了主键或唯一索引
insert into t_user(username,sex,address) values("Christy","male","WuHu")
on duplicate key update
sex="male",address="WuHu"
执行完上述语句后可以发现第一次插入的数据address字段变成了WuHu
replace into
即插入数据时,如果数据存在,则删除再插入,前提条件是插入的数据字段需要设置主键或唯一索引
replace into t_user(username,sex,address) values("Christy","male","AnHui")
执行完上述语句后可以发现address变成了最新的AnHui
insert if not exist
即insert into … select … where not exist … ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略
insert into t_user(username,sex,adress)
select "Christy","male","AnHui" from t_user
where not exists
(select username from t_user where username = "Christy")
显然username是Christy的用户已经存在了,不可能插入的进去。
本文介绍了MySQL数据库中避免重复插入数据的四种方法:使用insert ignore、on duplicate key update、replace into以及insert if not exist语句。通过设置主键或唯一索引,这些方法能在数据已存在时选择忽略、更新或替换,适用于不同场景。
1026

被折叠的 条评论
为什么被折叠?



