SQL UNIQUE 约束
唯一约束用来保证一列(或一组列)中的数据是唯一的。他们类似于主键,但存在以下重要区别:
表可包含多个唯一约束,但每个表只允许一个主键。
唯一约束列可包含NULL值。
唯一约束列可修改或更新。
唯一约束列的值可重复使用。
与主键不一样,唯一约束不能用来定义外键(FOREIGN KEY)。
比较项 | PRIMARY KEY约束 | UNIQUE约束 |
约束的数量 | 一个 | 多个 |
NULL值 | 不允许 | 允许 |
是否可定义外键 | 可定义外键 | 不可定义外键 |
是否可修改/更新 | 不修改/更新 | 可修改/更新 |
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个主键 (PRIMARY KEY )约束。
使用CREATE TABLE 语句创建 SQL UNIQUE 约束
下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 UNIQUE 约束:
MySQL:
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),UNIQUE (Id_P))
SQL Server Oracle MS Access:
CREATE TABLE Persons(Id_P 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(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName))
使用ALTER TABLE 语句添加 SQL UNIQUE 约束
当表已被创建时,如需要在 "Id_P" 列创建 UNIQUE 约束,前提条件是参与UNIQUE约束的列或列组合必须包含唯一值。
请使用下列 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE PersonsADD UNIQUE (Id_P)
如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE PersonsADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
删除 UNIQUE 约束
如需删除 UNIQUE 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE PersonsDROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE PersonsDROP CONSTRAINT uc_PersonID




