13.2.5 数据库约束 2.unique约束
13.2.5 数据库约束 2.UNIQUE约束
唯一约束用于保证指定列或指定列组合不允许出现重复值
。虽然唯一约束的列不可以出现重复值,但可以出现多个null
值(因为在数据库中null
不等于null
)。
同一个表内可建多个唯一约束,唯一约束也可由多列组合而成。当为某列创建唯一约束时,MySQL
会为该列相应地创建唯一索引。如果不给唯一约束起名,该唯一约束默认与列名相同。
唯一约束既可以使用列级约束语法建立,也可以使用表级约束语法建立。
如果需要为多列建组合约束
,或者需要为唯一约束指定约束名
,则只能用表级约束语法
。
当建立唯一约束时,MySQL
在唯一约束所在列或列组合上建立对应的唯一索引。
使用列级约束语法建立唯一约束
使用列级约束语法建立唯一约束非常简单,只要简单地在列定义后增加unique
关键字即可。SQL
语句如下:
1 | create table unique_test |
表级约束语法建立唯一约束
如果需要为多列组合建立唯一约束,或者想自行指定约束名,则需要使用表级约束语法。表级约束语法格式如下:
1 | [constraint 约束名] 约束定义 |
上面的表级约束语法格式既可放在create table
语句中与列定义并列,也可放在alter table
语句中使用add
关键字来添加约束。SQL
语句如下:
1 | create table unique_test2 |
上面的建表语句为test_name
、test_pass
分别建立了唯一约束,这意味着这两列都不能出现重复值。除此之外,还可以为这两列组合建立唯一约束,SQL
语句如下:
1 | create table unique_test3 |
对于上面的unique_test2
和unique_test3
两个表,都是对test_name
、test_pass
建立唯一约束,其中unique_test2
要求test_name
、test_pass
都不能出现重复值,而unique_test3
只要求test_name
、test_pass
两列值的组合不能重复。
修改表结构时增加或删除唯一约束
也可以在修改表结构时使用add
关键字来增加唯一约束,SQL
语句如下:
1 | alter table unique_test3 |
还可以在修改表时使用modify
关键字,为单列采用列级约束语法来增加唯一约束,代码如下:
1 | alter table unique_test3 |
对于大部分数据库而言,删除约束都是在alter table
语句后使用“drop constraint
约束名”语法来完成的,但MySQL
并不使用这种方式,而是使用“drop index 约束名
”的方式来删除约束。例如如下SQL
语句:
1 | alter table unique_test3 |