プライマリーキーを作成する(ALTER TABLE文)

MySQL では ALTER TABLE 文を使ってプライマリーキー(主キー)を作成することができます。ここでは MySQL でプライマリーキーを作成する方法について解説します。

なおプライマリーキーとはなにかや、テーブル作成時にプライマリーキーを同時に作成する方法については「PRIMARY KEY制約(主キー/プライマリキーを設定する)」を参照されてください。

(Last modified: )

プライマリーキーを作成する

ALTER TABLE 文を使ってプライマリーキーを作成する方法です。次の書式を使います。

ALTER TABLE tbl_name ADD PRIMARY KEY (col_name, ...)

対象となるテーブル名( tbl_name )とカラム名( col_name )を指定してプライマリーキーを作成します。複数のカラムが含まれる場合は、カンマ(,)で区切り続けて記述してください。

それでは実際にインデックスを作成してみます。先に対象となるテーブルを次のように作成しました。

create table user(id int, name varchar(10));

プライマリーキーを作成する(1)

作成したテーブルの id カラムを対象にプライマリーキーを作成します。次のように実行します。

alter table user add primary key (id);

プライマリーキーを作成する(2)

プライマリーキーが作成されました。

またカラムに対してプライマリーキーを設定する場合は、対象となるカラムに NOT NULL 制約を設定しておきます。ALTER TABLE 文を使って次のように実行してください。

alter table user modify id int not null;

プライマリーキーを作成する(3)

それでは作成されたプライマリーキーを確認してみます。

show index from user\G

プライマリーキーを作成する(4)

作成されたインデックスは名前が PRIMARY となっています。 Non_unique が 0 となっておりインデックスを作成した対象のカラムでは重複した値を格納することができません。また Null については定義がされていません。

またプライマリーキーの作成と NOT NULL 制約を設定したことによって SHOW CREAT TABLE 文の結果がどのように変わったのかを確認しておきます。

show index from user\G

プライマリーキーを作成する(5)

id カラムには NOT NULL 制約が設定されており、テーブルに対して id カラムを対象としたプライマリーキーが設定されていることが確認できました。

-- --

ALTER TABLE 文を使ってプライマリーキーを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。