MySQL数据库4种方式避免重复插入数据

本文介绍了MySQL数据库中避免重复插入数据的四种方法:使用insert ignore、on duplicate key update、replace into以及insert if not exist语句。通过设置主键或唯一索引,这些方法能在数据已存在时选择忽略、更新或替换,适用于不同场景。

本篇博文是本人在多个渠道收集到的有关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的用户已经存在了,不可能插入的进去。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潮汐先生

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值