目录
一、MySQL5.7新增数据避免数据重复的语法
语法数据已存在数据不存在insert ignore忽略插入
二、MySQL5.7新增数据避免数据重复的演示示例
- 一、MySQL5.7新增数据避免数据重复的语法
- 二、MySQL5.7新增数据避免数据重复的演示示例
- 1、建表并初始化假数据
- 2、创建唯一索引
- 3、插入用户名、邮箱和创建时间三个属性值的数据已经存在用户表中的数据,会提示警告,并不会插入数据成功
- 4、插入用户名、邮箱和创建时间三个属性值的数据其中只要有一个值与用户表中的用户名、邮箱和创建时间的数据不同,都会插入数据成功。
示例需求,例如用户表中油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');
-
给用户名、邮箱和创建时间三个属性创建唯一索引
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;
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');
-
插入的用户名不同,邮箱和创建时间的值相同,即可插入成功。
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');