MySQL でカラムの追加・変更・削除 (ALTER TABLE)
MySQL で既存のテーブルのカラムの追加・変更・削除や、制約やインデックスの追加や削除などを行うには、ALTER TABLE 文を使います。
ここでは ALTER TABLE 文を使って、テーブルのカラムを追加・変更・削除する方法をご説明します。
ALTER TABLE でテーブルにカラムを追加する
まずは、ALTER TABLE 文を使って、既存のテーブルにカラムを追加してみましょう。
ALTER TABLE 文には CREATE TABLE 文と同様に、オプションや指定できる項目がたくさんあります。
シンプルに ALTER TABLE を使ってテーブルに新しいカラムを追加するには、ALTER TABLE と ADD [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')
);
この students テーブルにメールアドレスを保存する email という VARCHAR(30) のデータ型のカラムを追加するクエリーは次の通りです。
ALTER TABLE students
ADD COLUMN email VARCHAR(300) NULL;
このスクリプトを実行して、MySQL Workbench の Schemas タブをリフレッシュすると、students テーブルに email カラムが追加されているのがわかります。
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 カラムの名前とデータ型が変更されました。
ちなみに、テーブルの定義を確認したい時は、DESCRIBE テーブル名 でテーブルの定意が表示できます。
ALTER TABLE でテーブルのカラムを削除する
ALTER TABLE を使って既存のテーブルからカラムを削除するには、ALTER TABLE と DROP [COLUMN] を使います。
テーブルのカラムを削除する構文は次の通りです。
ALTER TABLE テーブル名
DROP [COLUMN] カラム名;
ALTER TABLE & DROP を使って、先ほど students テーブルに追加した email_address カラムを削除します。
ALTER TABLE students
DROP COLUMN email_address;
このクエリーを実行すると、students テーブルの email_address カラムが削除されました。
以上、MySQL で ALTER TABLE 文を使って、テーブルのカラムを追加・変更・削除する方法をご説明しました。