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
その他の拡張