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

  • 相关阅读:
    python入门基础
    iOS开发应用学习笔记
    ios开发之NavBar和TarBar使用技巧
    iOS开发中常用第三方库的使用和配置-GDataXML
    iOS开发中常用第三方库的使用和配置-GDataXML
    ios程序发布测试打包
    iOS的动画效果类型及实现方法
    iOS定位服务编程详解
    键盘样式风格有关设置-iOS开发
    如何在ios 系统 中抓包??
  • 原文地址:https://www.cnblogs.com/huangqihui/p/12095271.html
Copyright © 2011-2022 走看看