UNIQUE 唯一限制 (SQL UNIQUE Constraint)

UNIQUE 用來保證欄位在資料表中的唯一性,約束資料表中的欄位不能有重複的資料。
一個資料表可有多個UNIQUE欄位,此外UNIQUE欄位中可以接受NULL值。

SQL UNIQUE Constraint

假設我們要對「customer」資料表限制「C_Id」欄位不能有重複值存在:

在建立資料表同時 - CREATE TABLE...
MySQL
CREATE TABLE customer
(
  C_Id INT NOT NULL,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20),
  UNIQUE (C_Id)
);

MySQL / SQL Server / Oracle / MS Access
CREATE TABLE customer
(
  C_Id INT NOT NULL UNIQUE,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20)
);

替唯一鍵命名與多欄位的唯一限制
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE customer
(
  C_Id INT NOT NULL,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20),
  CONSTRAINT u_Customer_Id UNIQUE (C_Id, Name)
);
我們限制C_Id及Name這兩個欄位共同唯一,CONSTRAINT後面接著的即是此唯一鍵的名稱。

更改資料表限制 - ALTER TABLE...
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE customer
ADD UNIQUE (C_Id);

替唯一鍵命名與多欄位的唯一限制
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE customer
ADD CONSTRAINT u_Customer_Id UNIQUE (C_Id, Name);

移除資料表限制 - ALTER TABLE...
MySQL
ALTER TABLE customer
DROP INDEX u_Customer_Id;

SQL Server / Oracle / MS Access
ALTER TABLE customer
DROP CONSTRAINT u_Customer_Id;