MySQL でカラムの追加・変更・削除 (ALTER TABLE)

MySQL で既存のテーブルのカラムの追加・変更・削除や、制約やインデックスの追加や削除などを行うには、ALTER TABLE 文を使います。

ここでは ALTER TABLE 文を使って、テーブルのカラムを追加・変更・削除する方法をご説明します。

ALTER TABLE でテーブルにカラムを追加する

まずは、ALTER TABLE 文を使って、既存のテーブルにカラムを追加してみましょう。

ALTER TABLE 文には CREATE TABLE 文と同様に、オプションや指定できる項目がたくさんあります。

シンプルに ALTER TABLE を使ってテーブルに新しいカラムを追加するには、ALTER TABLEADD [COLUMN] を使った、次のようなスクリプトを実行します。

ALTER TABLE テーブル名
ADD [COLUMN] カラム名 データ型 [NOT NULL | NULL];

それでは、実際に ALTER TABLE 文を実行して、カラムを追加してみましょう。

次のような CREATE TABLE 文で生成した students テーブルがあります。

CREATE TABLE students (
    student_id      INT             NOT NULL AUTO_INCREMENT,
    student_number  VARCHAR(10)     NOT NULL,
    first_name      VARCHAR(50)     NOT NULL,
    last_name       VARCHAR(50)     NOT NULL,
    middle_name     VARCHAR(50)     NULL,
	birthday  	    DATE            NOT NULL,
    gender          ENUM ('M','F')  NOT NULL,
    paid_flag       BOOL            NOT NULL DEFAULT FALSE,
    PRIMARY KEY (student_id),
    UNIQUE KEY (student_number),
    CHECK (birthday >= '2000-01-01')
);

MySQL でカラムの追加・変更・削除 (ALTER TABLE) 1


この students テーブルにメールアドレスを保存する email という VARCHAR(30) のデータ型のカラムを追加するクエリーは次の通りです。

ALTER TABLE students
ADD COLUMN email VARCHAR(300) NULL;

このスクリプトを実行して、MySQL Workbench の Schemas タブをリフレッシュすると、students テーブルに email カラムが追加されているのがわかります。

MySQL でカラムの追加・変更・削除 (ALTER TABLE) 2

ALTER TABLE でテーブルのカラムを変更する

MySQL で ALTER TABLE を使ってカラムを変更するには MODIFY [COLUMN]、RENAME COLUMN、CHANGE [COLUMN] などのキーワードが使えます。

どのキーワードをどんな時に使うかは、次の通りです。

  • MODIFY [COLUMN]: カラムの名前はそのままで、定義を変更したい時
  • RENAME COLUMN: カラムの名前のみを変更したい時
  • CHANGE [COLUMN]: カラムの名前と定義の両方を変更したい時

ALTER TABLE & MODIFY [COLUMN]、RENAME COLUMN、CHANGE [COLUMN] の構文は次の通りです。

ALTER TABLE テーブル名
MODIFY [COLUMN] カラム名 新しいデータ型 [NOT NULL | NULL];
ALTER TABLE テーブル名
RENAME COLUMN カラム名 TO 新しいカラム名
ALTER TABLE テーブル名
CHANGE [COLUMN] カラム名 新しいカラム名 新しいデータ型 [NOT NULL | NULL];

CHANGE を使ってカラム名を変更しないで定義だけ変更したい時は、新しいカラム名の箇所にも現在のカラム名を指定する必要があります。


例えば、ALTER TABLE & CHANGE を使って、先ほど students テーブルに追加した email VARCHAR(300) のカラムを、カラム名を email_address に、データ型を VARCHAR(256) に変更するには次のようにします。

ALTER TABLE students
CHANGE COLUMN email email_address VARCHAR(256) NULL;

このクエリーを実行すると、email カラムの名前とデータ型が変更されました。

MySQL でカラムの追加・変更・削除 (ALTER TABLE) 3


ちなみに、テーブルの定義を確認したい時は、DESCRIBE テーブル名 でテーブルの定意が表示できます。

MySQL でカラムの追加・変更・削除 (ALTER TABLE) 4


ALTER TABLE でテーブルのカラムを削除する

ALTER TABLE を使って既存のテーブルからカラムを削除するには、ALTER TABLEDROP [COLUMN] を使います。

テーブルのカラムを削除する構文は次の通りです。

ALTER TABLE テーブル名
DROP [COLUMN] カラム名;

ALTER TABLE & DROP を使って、先ほど students テーブルに追加した email_address カラムを削除します。

ALTER TABLE students
DROP COLUMN email_address;

このクエリーを実行すると、students テーブルの email_address カラムが削除されました。

MySQL でカラムの追加・変更・削除 (ALTER TABLE) 5


以上、MySQL で ALTER TABLE 文を使って、テーブルのカラムを追加・変更・削除する方法をご説明しました。

© 2024 MySQL 入門