zoukankan      html  css  js  c++  java
  • MySql -- unique唯一约束

    3、UNIQUE 约束

      约束唯一标识数据库表中的每条记录。

    创建一张测试表

    CREATE TABLE `test`.`info`(  
      `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `idCard` VARCHAR(18) UNIQUE NOT NULL, -- 直接在字段上添加唯一约束
      `mobile` VARCHAR(11),
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_estonian_ci;

    添加唯一约束UNIQUE

    /*
    除了上面的添加唯一约束的方法以外,
    如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,写法如下:
    uc_idCard约束由mobile和idCard组合成唯一约束。
    */
    CREATE TABLE `test`.`info`(  
      `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `idCard` VARCHAR(18) UNIQUE,
      `mobile` VARCHAR(11),
      PRIMARY KEY (`id`),
      CONSTRAINT `uc_idCard` UNIQUE (`mobile`,`idCard`) 
    ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_estonian_ci;
    
    
    如果在存在表的情况下,添加唯一约束
    -- 无名字的约束 ALTER TABLE `info` ADD UNIQUE (`idCard`);
    -- uc_idCard约束由mobile和idCard组合成唯一约束 ALTER TABLE `info` ADD CONSTRAINT `uc_idCard` UNIQUE (`mobile`,`idCard`);

    撤销 UNIQUE 约束

    -- 移除指定字段的约束
    ALTER TABLE `info` DROP INDEX `idCard`; 
    
    -- 移除有名字的约束
    ALTER TABLE `info` DROP INDEX `uc_idCard`; 

    向 UNIQUE 约束添加数据

    -- 添加一条基础数据
    INSERT INTO `info`(`idCard`,`mobile`) VALUES('99999','1111');
    
    -- 添加一条idCard重复的记录
    INSERT INTO `info`(`idCard`,`mobile`) VALUES('99999','2222');
    
    结果:
    错误代码: 1062
    DUPLICATE entry '99999' FOR KEY 'idCard';
    
    -- 在唯一约束中添加 NULL
    INSERT INTO `info`(`idCard`,`mobile`) VALUES(NULL,'1111');
    -- 再次添加NULL
    INSERT INTO `info`(`idCard`,`mobile`) VALUES(NULL,'2222');
    
    结果:
        id  idCard  mobile  
    -------------------------
         6  (NULL)  1111    
         7  (NULL)  2222
    原因:因为 NULL != NULL
    原创内容,如果你觉得文章还可以的话,不妨点个赞支持一下!转载请注明出处。
  • 相关阅读:
    如何安全的创建线程池?
    【Java Proxy Pattern】Java的代理模式
    php全局变量/局部变量/静态变量
    php strstr()
    微信公众号开发(四):js-sdk的应用
    微信公众号平台开发(三):几大微信接口的调用
    php操作数据库
    微信公众号开发(一)--开发模式与编辑模式
    微信公众平台开发(二):交互与接口
    day6 字典的增减查删
  • 原文地址:https://www.cnblogs.com/lixingwu/p/7206658.html
Copyright © 2011-2022 走看看