MySQL 唯一约束(UNIQUE KEY)
【摘要】 唯一约束(UNIQUE KEY) 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘1’,那么该表中就不能出现另一条记录的 id 值也为‘1’。 唯一约束与主键约束的异同:相同点:都可以确保列的唯一性不同点:唯一约束:在一个表中可有多个,并且设置唯一约束...
唯一约束(UNIQUE KEY)
唯一约束与主键约束的异同:
-
相同点:都可以确保列的唯一性
-
不同点:
-
唯一约束:在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。
-
主键约束:主键约束在一个表中只能有一个,且不允许有空值。
-
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)