MySQL UNIQUE 唯一约束

时间:2019-02-04 12:52:27  来源:igfitidea点击:

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

MySQL中的独特约束是什么?

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

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

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

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

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

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中创建唯一约束示例:

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。

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

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语句创建唯一约束的语法为:

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

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

ALTER TABLE contacts
ADD CONSTRAINT contacts_unique UNIQUE (reference_number);

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

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

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

删除唯一约束

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

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

删除唯一约束示例

ALTER TABLE contacts
DROP INDEX contacts_unique;

删除唯一约束contacts_unique