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