PRIMARY KEY 制約は、ユニークにデータベーステーブル内の各レコードを識別します。
主キーは、ユニークな値を含まなければなりません。
主キーの列には、NULL 値を含むことができません。
各テーブルは主キーを持つべきで、各テーブルはただ 1 つの主キーを持つことができます。
次の SQL は、"Persons" テーブルを作るときに、"P_Id" 列に PRIMARY KEY を作成します:
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)
)
注: 記の例では、唯一の PRIMARY KEY(pk_PersonID)があります。
しかし、pk_PersonID の値は、2つの列(P_Id と LastName)で作られています。
作成済みテーブルの "P_Id" 列に、PRIMARY KEY 制約を作成するためには、次の 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)
注: 主キーを追加するのに ALTER TABLE 文を使用する場合、主キーの列は、 既に(テーブルを最初に作成した時点で)NULL 値が含まれないことを宣言していなければなりません<
PRIMARY KEY 制約の削除には、次の SQL を使用します:
MySQL:
ALTER TABLE Persons
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID