2012年9月19日 星期三

【Transact-SQL】PRIMARY KEY 主鍵限制

先筆記。

PRIMARY KEY 用來保證欄位在資料表中的唯一性,主鍵欄位中的每一筆資料在資料表中都必需是獨一無二的。

PRIMARY KEY有點類似UNIQUE加上NOT NULL。一個資料表中只能有一個PRIMARY KEY;但是可以有多個UNIQUE。PRIMARY KEY 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),

PRIMARY KEY (C_Id)

);

MySQL / SQL Server / Oracle / MS Access

CREATE TABLE customer

(

C_Id INT NOT NULL PRIMARY KEY,

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 pk_Customer_Id PRIMARY KEY (C_Id, Name)

);我們限制C_Id及Name這兩個欄位為主鍵,CONSTRAINT後面接著的即是此主鍵的名稱。當主鍵包含多個欄位時,我們稱之為組合鍵(Composite Key)。

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

MySQL / SQL Server / Oracle / MS Access

ALTER TABLE customer

ADD PRIMARY KEY (C_Id);

替主鍵命名與多欄位的組合鍵

MySQL / SQL Server / Oracle / MS Access

ALTER TABLE customer

ADD CONSTRAINT u_Customer_Id PRIMARY KEY (C_Id, Name);

移除資料表限制 - ALTER TABLE...

MySQL

ALTER TABLE customer

DROP PRIMARY KEY;

SQL Server / Oracle / MS Access

ALTER TABLE customer

DROP CONSTRAINT pk_PersonID;

來源參考:http://webdesign.piipo.com/sql/sql_primary_key

沒有留言:

張貼留言