UNIQUE 唯一限制 (SQL UNIQUE Constraint)

UNIQUE 用來保證欄位在資料表中的唯一性,約束資料表中的欄位不能有重複的資料。

一個資料表可有多個 UNIQUE 欄位,此外 UNIQUE 欄位中可以接受 NULL 值。

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

在建立資料表時 CREATE TABLE...

CREATE TABLE customer (
  C_Id INT NOT NULL UNIQUE,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20)
);

或這樣寫:

CREATE TABLE customer (
  C_Id INT NOT NULL,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20),
  UNIQUE (C_Id)
);

替唯一鍵命名與多欄位的唯一限制

我們限制 C_Id 及 Name 這兩個欄位共同唯一,CONSTRAINT 後面接著的即是此唯一鍵的名稱。

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)
);

更改資料表限制 ALTER TABLE...

ALTER TABLE customer ADD UNIQUE (C_Id);

替唯一鍵命名與多欄位的唯一限制:

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;