Latest web development tutorials

SQL UNIQUE 約束

SQL UNIQUE 約束

UNIQUE 約束唯一標識數據庫表中的每條記錄。

UNIQUE 和PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。

PRIMARY KEY 約束擁有自動定義的UNIQUE 約束。

請注意,每個表可以有多個UNIQUE 約束,但是每個表只能有一個PRIMARY KEY 約束。


CREATE TABLE 時的SQL 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)
)


ALTER TABLE 時的SQL 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)


撤銷UNIQUE 約束

如需撤銷UNIQUE 約束,請使用下面的SQL:

MySQL:

ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID