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 重复代码片段

20180608MySQL5.7新增表mysql.gtid_executed

mysql5.7新增参数配置解释

mysql5.7日志时间与系统时间不一致

mysql中出现重复记录

centos7下忘记mysql5.7密码