MySQL 唯一约束(UNIQUE KEY)

举报
CoderX 发表于 2022/04/20 16:04:25 2022/04/20
【摘要】 唯一约束(UNIQUE KEY) 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘1’,那么该表中就不能出现另一条记录的 id 值也为‘1’。 唯一约束与主键约束的异同:相同点:都可以确保列的唯一性不同点:唯一约束:在一个表中可有多个,并且设置唯一约束...

唯一约束(UNIQUE KEY)

唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘1’,那么该表中就不能出现另一条记录的 id 值也为‘1’。

唯一约束与主键约束的异同:

  • 相同点:都可以确保列的唯一性

  • 不同点:

    • 唯一约束:在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。

    • 主键约束:主键约束在一个表中只能有一个,且不允许有空值。

1.在创建表时设置唯一约束

唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上。

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

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

示例1:创建数据表tb_dept2,指定部门名称唯一,SQL语句和运行结果如下所示:

 mysql> CREATE TABLE tb_dept2(
     -> id INT(11) PRIMARY KEY,
     -> name VARCHAR(22) UNIQUE,
     -> location VARCHAR(50));
 Query OK, 0 rows affected (0.02 sec)
 ​
 mysql> DESC tb_dept2;
 +----------+-------------+------+-----+---------+-------+
 | Field    | Type        | Null | Key | Default | Extra |
 +----------+-------------+------+-----+---------+-------+
 | id       | int(11)     | NO   | PRI | NULL    |       |
 | name     | varchar(22) | YES  | UNI | NULL    |       |
 | location | varchar(50) | YES  |     | NULL    |       |
 +----------+-------------+------+-----+---------+-------+
 3 rows in set (0.00 sec)

2.在修改表时添加唯一约束

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

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

示例2:修改数据表tb_dept,指定部门名称唯一,SQL语句和运行结果如下:

 mysql> ALTER TABLE tb_dept ADD CONSTRAINT unique_name UNIQUE(name);
 Query OK, 0 rows affected (0.01 sec)
 Records: 0  Duplicates: 0  Warnings: 0
 ​
 mysql> DESC tb_dept;
 +----------+-------------+------+-----+---------+-------+
 | Field    | Type        | Null | Key | Default | Extra |
 +----------+-------------+------+-----+---------+-------+
 | id       | int(11)     | NO   | PRI | NULL    |       |
 | name     | varchar(22) | NO   | UNI | NULL    |       |
 | location | varchar(50) | YES  |     | NULL    |       |
 +----------+-------------+------+-----+---------+-------+
 3 rows in set (0.00 sec)

3.删除唯一约束

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

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

示例3:删除数据表tb_dept中的唯一约束unique_name ,SQL 语句和运行结果如下所示。

 mysql> ALTER TABLE tb_dept DROP INDEX unique_name;
 Query OK, 0 rows affected (0.01 sec)
 Records: 0  Duplicates: 0  Warnings: 0
 ​
 mysql> DESC tb_dept;
 +----------+-------------+------+-----+---------+-------+
 | Field    | Type        | Null | Key | Default | Extra |
 +----------+-------------+------+-----+---------+-------+
 | id       | int(11)     | NO   | PRI | NULL    |       |
 | name     | varchar(22) | NO   |     | NULL    |       |
 | location | varchar(50) | YES  |     | NULL    |       |
 +----------+-------------+------+-----+---------+-------+
 3 rows in set (0.00 sec)
 ​
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。