MySQL PRIMARY KEY 制約
1. MySQL PRIMARY KEY 制約の概要
PRIMARY KEY(主キー)制約は、データベーステーブル内の各レコード(行)を一意に識別するために使用されます。
PRIMARY KEY 制約が設定されたカラムは、「一意であること(UNIQUE)」と「NULLを許容しないこと(NOT NULL)」の両方を満たす必要があります。つまり、この制約は UNIQUE と NOT 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;