MySQL5.7新增数据避免重复记录
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL5.7新增数据避免重复记录相关的知识,希望对你有一定的参考价值。
目录
一、mysql5.7新增数据避免数据重复的语法
语法 | 数据已存在 | 数据不存在 |
---|---|---|
insert ignore | 忽略 | 插入 |
二、MySQL5.7新增数据避免数据重复的演示示例
示例需求,例如用户表中油id,用户名,年龄,邮箱、创建时间五个属性,如果用户名、邮箱和创建时间三个属性值的数据已经存在用户表中,则不插入数据,否则插入数据。
1、建表并初始化假数据
-
创建用户表
CREATE TABLE `sys_user` ( `id` int(8) NOT NULL, `user_name` varchar(50) DEFAULT NULL, `user_age` int(2) DEFAULT NULL, `user_email` varchar(50) DEFAULT NULL, `create_time` datetime DEFAULT NULL, KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
-
新增一条数据
INSERT IGNORE INTO sys_user(id,user_name, user_age,user_email, create_time) VALUES(2,"张三", 28,'111@qq.com','2021-07-10 16:23:11');
2、创建唯一索引
-
给用户名、邮箱和创建时间三个属性创建唯一索引
ALTER TABLE sys_user ADD CONSTRAINT ix_name_email_time UNIQUE(user_name,user_email,create_time);
-
查看索引
#查看用户表的索引 SHOW INDEX FROM sys_user;
-
删除索引语法如下:
ALTER TABLE sys_user DROP INDEX ix_name_email_time;
3、插入用户名、邮箱和创建时间三个属性值的数据已经存在用户表中的数据,会提示警告,并不会插入数据成功
INSERT IGNORE INTO sys_user(id,user_name, user_age,user_email,
create_time) VALUES(2,"张三", 28,'111@qq.com','2021-07-09 14:08:11');
4、插入用户名、邮箱和创建时间三个属性值的数据其中只要有一个值与用户表中的用户名、邮箱和创建时间的数据不同,都会插入数据成功。
-
插入的用户名不同,邮箱和创建时间的值相同,即可插入成功。
INSERT IGNORE INTO sys_user(id,user_name, user_age,user_email, create_time) VALUES(2,"李四", 28,'111@qq.com','2021-07-10 16:23:11');
-
插入的邮箱不同,用户名和创建时间的值相同,即可插入成功。
INSERT IGNORE INTO sys_user(id,user_name, user_age,user_email, create_time) VALUES(2,"张三", 28,'222@qq.com','2021-07-10 16:23:11');
-
插入的创建时间不同,用户名和邮箱的值相同,即可插入成功。
INSERT IGNORE INTO sys_user(id,user_name, user_age,user_email, create_time) VALUES(3,"张三", 28,'111@qq.com','2021-07-10 16:23:30');
以上是关于MySQL5.7新增数据避免重复记录的主要内容,如果未能解决你的问题,请参考以下文章
需要一种有效的方法来避免使用 Laravel 5 重复代码片段