一. 前言
因为主键一张表只有一个,如果想保证唯一性,可以使用UNIQUE KEY(唯一约束)
二. UNIQUE KEY
- 唯一约束
- 唯一约束可以保证记录的唯一性
- 唯一约束的字段可以为空值(NULL)(这里比较难以理解:因为既然可以为空值,那么2条或者2条以上的记录如果都为空值,都为空值就是相同的,岂不是违背了唯一性?其实这里存储的时候,多个空值只会保存一个空值,所以并不违背唯一性)
- 每张数据表可以存在多个唯一约束
三. 创建唯一约束
我们创建一个既有主键约束,又有唯一约束的数据表:
mysql> CREATE TABLE tb5( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(30) NOT NULL UNIQUE KEY, -> age TINYINT UNSIGNED -> ); Query OK, 0 rows affected (0.01 sec)
查看一下数据表的结构:
mysql> SHOW COLUMNS FROM tb5; +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(30) | NO | UNI | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | +----------+----------------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec)
可以看到,id为主键约束,username为唯一约束,我们写入一些记录:
mysql> INSERT tb5(username,age) VALUES('TOM',22); Query OK, 1 row affected (0.01 sec) mysql> INSERT tb5(username,age) VALUES('TOM',22); ERROR 1062 (23000): Duplicate entry 'TOM' for key 'username'
可以发现username不能重复
请登录之后再进行评论