SQL PRIMARY KEY制約
SQL PRIMARY KEY 制約
PRIMARY KEY 制約は、データベーステーブルの各レコードを一意に識別します。
PRIMARY KEY は一意の値を含む必要があり、NULL 値を含めることはできません。
各テーブルには PRIMARY KEY を1つだけ設定でき、この主キーは単一の列または複数の列で構成できます。
CREATE TABLE 時の SQL PRIMARY KEY 制約
次の 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)は1つだけです。ただし、pk_PersonID の値は2つの列(P_Id と LastName)で構成されています。
ALTER TABLE 時の SQL PRIMARY KEY 制約
テーブルが既に作成されている場合、"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 制約の削除
PRIMARY KEY 制約を削除するには、次の SQL を使用します:
MySQL:
ALTER TABLE Persons DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT pk_PersonIDその他の拡張