SQL UNIQUE 约束

UNIQUE 约束保证在一个字段的数据或者一组字段里的组合数据是唯一的,与其它行都不相同。

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

1. CREATE TABLE 中 UNIQUE 约束

下面的 SQL 在 "Persons" 表创建时在 "P_Id" 列上创建 UNIQUE 约束:

MySQL:

CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (P_Id) )

SQL Server / Oracle / MS Access:

CREATE TABLE Persons ( P_Id int NOT NULL UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) )

2. ALTER TABLE 中 UNIQUE 约束

当表已被创建时,如需在 "P_Id" 列创建 UNIQUE 约束,请使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons ADD UNIQUE (P_Id)

如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

3. 撤销 UNIQUE 约束

如需撤销 UNIQUE 约束,请使用下面的 SQL:

MySQL:

ALTER TABLE Persons DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

ALTER TABLE Persons DROP CONSTRAINT uc_PersonID

下一章:SQL PRIMARY KEY 约束

SQL PRIMARY KEY(主键)约束:PRIMARY KEY(主键)约束是表中的一个或多个字段,它的值用于标识表中唯一的一条记录。主键必须包含唯一的值。 主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。