zoukankan      html  css  js  c++  java
  • 数据库避免插入重复的数据(已经有重复数据的表中又该怎么设置)

    有的时候需要对数据库的某个字段要求不能重复,所以要设置这个字段的唯一性

    1. 把这个字段设置成主键

      把phonumber设置为主键

    CREATE TABLE `userinformation` (
      `username` varchar(50) DEFAULT NULL,
      `phonenumber` varchar(30) NOT NULL,
      `classify` varchar(20) DEFAULT NULL,
      `start_date` varchar(50) DEFAULT NULL,
      `end_date` datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`phonumber`)
    )

    2. 要是不想设置为主键,那可以为它增加UNIQUE属性,在创建表的时候设置,要是设置某个字段的唯一性,那么这个字段也要设置NOT NULL,因为唯一索引不允许有两个NULL及以上。

    设置phonumber字段的唯一性

    CREATE TABLE `userinformation` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL,
      `phonenumber` varchar(30) NOT NULL UNIQUE
      `classify` varchar(20) DEFAULT NULL,
      `start_date` varchar(50) DEFAULT NULL,
      `end_date` datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) 

    表已经创建了,想要后期加上

     ALTER TABLE `userinformation` ADD unique(`字段名称`)

    3.我们还可以在navicat里设置

    选中表后,点击设计表:

    点击索引那一栏,选择索引类型。名字自己随意取。

    注意

    1. 若是字段已存在重复的数据,那么在navicat里更改或者sql语句更改都会报错的,那就需要先删除重复的数据。navicat的删除就不说了,我们说一下sql语句怎么删除,假设我的表只有id和phonunumber这俩字段。

      需要先创建一个临时表new_table,临时表的数据可以对原表userinformation进行分组查询获取,新生成的new_table中数据没有重复的,也没有id字段。 

    CREATE TABLE new_table SELECT phonenumber FROM userinformation GROUP BY  phonenumber

      拷贝原表的表结构为新表userinformation1,把new_table表的数据插入到userinformation1,然后删原表,把新表改成原表的名字

    DROP TABLE userinformation
    INSERT INTO userinformation1 SELECT null,phonenumber FROM new_table
    ALTER TABLE uaerinformation1 rename to userinformation

    2. 我们对字段设置了唯一性后,插入的数据若是重复就会报错,可以在INSERT的时候设置成数据重复就跳过。通过INSERT IGNORE 来跳过:

    INSERT IGNORE INTO userinformation (phonumber) VALUES(111111)

    navicat

  • 相关阅读:
    Ruby向Java发起挑战,红色风暴来了吗?
    学习语义网的好书
    Joel给计算机系学生们七条免费的建议
    ruby rails: 一个高开发效率的web开发框架
    推荐:《真正的执行》
    每个java程序员都应该看看Jakarta Commons
    上海IT俱乐部论坛开通了!
    重构的三个层次
    一些蔡志忠先生的漫画书!
    pythonchanllenge: 解决迷题,非常有趣的学习python的方式
  • 原文地址:https://www.cnblogs.com/huangqihui/p/12095271.html
Copyright © 2011-2022 走看看