• MySQL唯一约束(UNIQUE KEY)


    MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

    在创建表时设置唯一约束

    在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下:

    1. <字段名> <数据类型> UNIQUE

    【实例 1】创建数据表 tb_dept2,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。

    1. mysql> CREATE TABLE tb_dept2
    2. -> (
    3. -> id INT(11) PRIMARY KEY,
    4. -> name VARCHAR(22) UNIQUE,
    5. -> location VARCHAR(50)
    6. -> );
    7. Query OK, 0 rows affected (0.37 sec)
    8. mysql> DESC tb_dept2;
    9. +----------+-------------+------+-----+---------+-------+
    10. | Field | Type | Null | Key | Default | Extra |
    11. +----------+-------------+------+-----+---------+-------+
    12. | id | int(11) | NO | PRI | NULL | |
    13. | name | varchar(40) | YES | UNI | NULL | |
    14. | location | varchar(50) | YES | | NULL | |
    15. +----------+-------------+------+-----+---------+-------+
    16. 3 rows in set (0.08 sec)

    提示:UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMAY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。

    在修改表时添加唯一约束

    在修改表时添加唯一约束的语法格式为:

    1. ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);

    【实例 2】修改数据表 tb_dept1,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。

    1. mysql> ALTER TABLE tb_dept1
    2. -> ADD CONSTRAINT unique_name UNIQUE(name);
    3. Query OK, 0 rows affected (0.63 sec)
    4. Records: 0 Duplicates: 0 Warnings: 0
    5. mysql> DESC tb_dept1;
    6. +----------+-------------+------+-----+---------+-------+
    7. | Field | Type | Null | Key | Default | Extra |
    8. +----------+-------------+------+-----+---------+-------+
    9. | id | int(11) | NO | PRI | NULL | |
    10. | name | varchar(22) | NO | UNI | NULL | |
    11. | location | varchar(50) | YES | | NULL | |
    12. +----------+-------------+------+-----+---------+-------+
    13. 3 rows in set (0.00 sec)

    删除唯一约束

    在 MySQL 中删除唯一约束的语法格式如下:

    1. ALTER TABLE <表名> DROP INDEX <唯一约束名>;

    【实例 3】删除数据表 tb_dept1 中的唯一约束 unique_name,输入的 SQL 语句和运行结果如下所示。

    1. mysql> ALTER TABLE tb_dept1
    2. -> DROP INDEX unique_name;
    3. Query OK, 0 rows affected (0.20 sec)
    4. Records: 0 Duplicates: 0 Warnings: 0
    5. mysql> DESC tb_dept1;
    6. +----------+-------------+------+-----+---------+-------+
    7. | Field | Type | Null | Key | Default | Extra |
    8. +----------+-------------+------+-----+---------+-------+
    9. | id | int(11) | NO | PRI | NULL | |
    10. | name | varchar(22) | NO | | NULL | |
    11. | location | varchar(50) | YES | | NULL | |
    12. +----------+-------------+------+-----+---------+-------+
    13. 3 rows in set (0.00 sec)
  • 相关阅读:
    在服务器上部署 Nginx 并设置图片服务器
    自己实现 SpringMVC 底层机制 系列之-实现任务阶段 4- 完成自定义@Service 注解功能
    【python】文件操作
    using virtualbox in ubuntu
    Modbus协议详解4:RTU帧 & ASCII帧的差错校验
    LeetCode简单题之两个数组间的距离值
    黑马程序员Java实战项目--- ATM系统
    nacos未授权-CVE-2021-29441复现
    RK3399系统移植 | 基于 ubuntu core 20.04 构建根文件系统
    爱普生发布一款16位MCU产品用于大电流LED驱动
  • 原文地址:https://blog.csdn.net/unbelievevc/article/details/126931103