最新的Web開發教程
 

SQL主鍵約束


SQL主鍵約束

主鍵約束唯一標識數據庫表中的每個記錄。

主鍵必須包含唯一的值。

主鍵列不能包含空值。

大多數表應該有一個主鍵,並且每個表只能有一個主鍵。


SQL主鍵約束的CREATE TABLE

下面的SQL創建的一個PRIMARY KEY "P_Id"欄時, "Persons"是創建的表:

MySQL:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

要允許PRIMARY KEY約束的命名,並為多個列定義PRIMARY KEY約束,可以使用下面的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 pk_PersonID PRIMARY KEY (P_Id,LastName)
)

Note:在上面的例子中,只有一個主鍵(pk_PersonID)。 但是,主密鑰的值是由兩列(P_ID +名字)。


SQL PRIMARY KEY約束的ALTER TABLE

要在創建PRIMARY KEY約束"P_Id"時,已創建的表列,請使用以下SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

要允許PRIMARY KEY約束的命名,並為多個列定義PRIMARY KEY約束,可以使用下面的SQL語法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

Note:如果您使用ALTER TABLE語句來添加主鍵,主鍵列(S)必須已經被宣布為不包含空值(第一次創建表時)。


要刪除主鍵約束

要刪除PRIMARY KEY約束,使用下面的SQL:

MySQL:

ALTER TABLE Persons
DROP PRIMARY KEY

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID