MySQL UNIQUE 唯一约束


本教程将通过语法和示例说明了如何在MySQL中创建,添加和删除唯一约束UNIQUE。

MySQL中的独特约束是什么?

唯一约束是唯一定义记录的单个字段或多个字段的组合。只要值的组合是唯一的,某些字段就可以包含空值。

唯一约束和主键之间有什么区别?

主键 唯一约束
属于主键的任何字段都不能包含空值。 只要值的组合是唯一的,某些属于唯一性约束的字段就可以包含空值。

创建唯一约束-使用CREATE TABLE语句

在MySQL中使用CREATE TABLE语句创建唯一约束的语法为:

1
2
3
4
5
6
7
8
CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, ... uc_col_n)
);
参数 说明
table_name 要创建的表的名称。
column1,column2 要创建的列。
constraint_name 唯一约束的名称。
uc_col1,uc_col2,... uc_col_n 组成唯一约束的列。

使用CREATE TABLE语句在MySQL中创建唯一约束示例:

1
2
3
4
5
6
7
8
CREATE TABLE contacts
( contact_id INT(11) PRIMARY KEY AUTO_INCREMENT,
reference_number INT(11) NOT NULL,
last_name VARCHAR(30) NOT NULL,
first_name VARCHAR(25),
birthday DATE,
CONSTRAINT contacts_unique UNIQUE (contact_id)
);

在contacts表上创建了一个唯一的约束,叫做contacts_unique。它仅包含一个字段reference_number。

创建包含多个字段的唯一约束:

1
2
3
4
5
6
7
8
CREATE TABLE contacts
( contact_id INT(11) PRIMARY KEY AUTO_INCREMENT,
reference_number INT(11) NOT NULL,
last_name VARCHAR(30) NOT NULL,
first_name VARCHAR(25),
birthday DATE,
CONSTRAINT contacts_unique UNIQUE (last_name, first_name)
);

创建唯一的约束-使用ALTER TABLE语句

在MySQL中使用ALTER TABLE语句创建唯一约束的语法为:

1
2
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
参数 说明
table_name 添加唯一约束的表的名称。
constraint_name 唯一约束的名称。
column1,column2,... column_n 组成唯一约束的列。

使用ALTER TABLE语句向MySQL中的现有表添加唯一约束的示例

1
2
ALTER TABLE contacts
ADD CONSTRAINT contacts_unique UNIQUE (reference_number);

在现有的contacts表上创建了一个唯一的约束,称为contacts_unique。它由reference_number字段组成。

创建包含多个字段的唯一约束:

1
2
ALTER TABLE contacts
ADD CONSTRAINT contact_name_unique UNIQUE (last_name, first_name);

删除唯一约束

在MySQL中删除唯一约束的语法为:

1
2
ALTER TABLE table_name
DROP INDEX constraint_name;
参数 说明
table_name 要删除唯一约束的表名称。
constraint_name 要删除的唯一约束的名称。

删除唯一约束示例

1
2
ALTER TABLE contacts
DROP INDEX contacts_unique;

删除唯一约束contacts_unique


原文链接:https://codingdict.com/