MySQL 速習チュートリアル

MySQL PRIMARY KEY 制約

1. MySQL PRIMARY KEY 制約の概要

PRIMARY KEY(主キー)制約は、データベーステーブル内の各レコード(行)を一意に識別するために使用されます。

PRIMARY KEY 制約が設定されたカラムは、「一意であること(UNIQUE)」と「NULLを許容しないこと(NOT NULL)」の両方を満たす必要があります。つまり、この制約は UNIQUENOT NULL を組み合わせた性質を持っています。

1つのテーブルに設定できる PRIMARY KEY 制約は1つだけです。主キーは、単一のカラムで構成される場合もあれば、複数のカラムを組み合わせて構成される場合もあります。

       Tips: 主キーは、他のテーブルの FOREIGN KEY(外部キー)制約の参照先となります。これにより、2つのテーブル間のデータにおける参照整合性が担保されます。

2. CREATE TABLE 時の PRIMARY KEY 設定

テーブルを作成する際に、"ID" カラムに対して PRIMARY KEY を定義する SQL 構文は以下の通りです。

実行例

/* 自分専用の SQL サーバーを取得 */
CREATE TABLE Persons (
    ID int PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

3. 複数カラムによる PRIMARY KEY 設定

複数のカラムを組み合わせて「名前なし」の PRIMARY KEY 制約を定義するには、以下の構文を使用します。

実行例

CREATE TABLE Persons (
    ID int,
    LastName varchar(255),
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID, LastName)
);

       注意: 上記の例では、PRIMARY KEY の値は「ID + LastName」の2つのカラムの組み合わせで構成されます。

3.1 名前付きの PRIMARY KEY 設定(複数カラム)

制約に名前(この例では PK_Person)を付けて定義する場合は、以下の構文を使用します。

実行例

CREATE TABLE Persons (
    ID int,
    LastName varchar(255),
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID, LastName)
);

4. ALTER TABLE 時の PRIMARY KEY 設定

すでにテーブルが作成されている状態で、"ID" カラムに PRIMARY KEY 制約を追加するには、以下の SQL を使用します。

実行例

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

4.1 複数カラムへの制約追加 (ALTER TABLE)

既存のテーブルに対して、名前付きの PRIMARY KEY 制約を複数カラムに設定する場合は、以下の通りです。

実行例

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);

       注意:ALTER TABLE を使用して主キーを追加する場合、対象となるカラムはテーブル作成時に NOT NULL として宣言されている必要があります。

5. PRIMARY KEY 制約の削除

設定されている PRIMARY KEY 制約を削除するには、以下の SQL を実行します。

実行例

ALTER TABLE Persons
DROP PRIMARY KEY;