MySQLのALTER TABLEステートメントを使ったことはあるでしょうか。テーブルの編集などができる便利なステートメント。慣れてきたタイミングで使用してみることをおすすめします。今回の記事では、MySQLのALTER TABLEステートメントの主な機能をご紹介していきましょう。
- MySQLのALTER TABLEステートメントはテーブル・インデックス・カラム名、定義の編集が可能
- ALTER TABLEステートメントでカラムの追加・削除が可能
MySQLのALTER TABLEステートメントとは
MySQLのALTER TABLEステートメントには、以下4つの機能があります。
- テーブル・インデックス・カラムの名前を編集する
- カラムの定義を編集する
- テーブルに新たなカラムを追加する
- テーブルのカラムを削除する
「CREATE」や「DROP」ステートメントではテーブルの作成・削除しかできませんでした。そのためテーブル作成後に新たなカラムが必要だったと気づいた際に、1度テーブルを削除して作り直していた方も多いのではないでしょうか。
「ALTER TABLE」ステートメントは、新たにカラムを追加したり、名前を変えたり、カラムを1部削除したりすることが可能です。
MySQLのALTER TABLEステートメントの具体的な用例
こちらでは先ほど紹介した4種の「ALTER TABLE」ステートメント構文を詳しく解説していきます。
説明に用いるテーブルの確認
以下の説明に用いるテーブル構造を確認しておきましょう。
foodsテーブルの中身
+-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | price | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+
上記のテーブルを用いて、詳しく「ALTER TABLE」ステートメント構文の説明をします。
テーブル・インデックス・カラム名の編集
まずは「テーブル・インデックス・カラム名の編集」を行う際の「ALTER TABLE」ステートメント構文を見ていきましょう。
テーブル名の編集
ALTER TABLE 旧テーブル名 RENAME TO 新テーブル名;
インデックス名の編集
ALTER TABLE テーブル名 RENAME INDEX 旧インデックス名 TO 新インデックス名;
カラム名の編集
ALTER TABLE テーブル名 RENAME COLUMN 旧カラム名 TO 新カラム名;
「ALTER TABLE」ステートメントは、上記の構文を用いることで使用できます。ベースとなるテーブルの名前を変えてみましょう。
「ALTER TABLE」ステートメントによるテーブル名変更
ALTER TABLE foods RENAME TO foods2; Query OK, 0 rows affected (0.01 sec)
結果の確認
mysql> DESC foods2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | price | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+
先ほどまで「foods」だったテーブルの名前が「foods2」に変更されたことがわかります。
カラム定義の編集
次にカラム定義編集の「ALTER TABLE」ステートメント構文を見ていきます。
カラム名とカラムの定義(データ型など)の編集
ALTER TABLE テーブル名 CHANGE 旧カラム名 新カラム名 新カラム定義;
カラム定義の編集
ALTER TABLE テーブル名 MODIFY カラム名 新カラム定義;
「ALTER TABLE」ステートメントは、上記の構文を用いることで使用できます。「name」テーブルの名前を「food_name」変え、さらに「varchar(20)に編集してみましょう。
「ALTER TABLE」ステートメントによるテーブル名変更
ALTER TABLE foods2 CHANGE name food_name VARCHAR(20); Query OK, 0 rows affected (0.01 sec)
結果の確認
DESC foods2; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | food_name | varchar(20) | YES | | NULL | | | price | varchar(50) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
カラム名が「food_name」となり、VARCHAR(20)に編集されていることが確認できます。
カラムの追加
次にカラム追加の「ALTER TABLE」ステートメント構文を見ていきます。
カラム定義の編集
ALTER TABLE テーブル名 ADD カラム名 カラム定義;
「ALTER TABLE」ステートメントは、上記の構文を用いることで使用できます。「color」カラムをfoods2テーブルに追加してみましょう。
「ALTER TABLE」ステートメントによるテーブル名変更
ALTER TABLE foods2 ADD color VARCHAR(50); Query OK, 0 rows affected (0.01 sec)
結果の確認
DESC foods2; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | food_name | varchar(20) | YES | | NULL | | | price | varchar(50) | YES | | NULL | | | color | varchar(50) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
カラムに「color」が追加されていることが確認できます。
カラムの削除
最後にカラム削除の「ALTER TABLE」ステートメント構文を見ていきます。
カラム定義の編集
ALTER TABLE テーブル名 DROP カラム名;
「ALTER TABLE」ステートメントは、上記の構文を用いることで使用できます。今度は、先ほど追加した「color」カラムを削除してみましょう。
「ALTER TABLE」ステートメントによるテーブル名変更
ALTER TABLE foods2 DROP color; Query OK, 0 rows affected (0.13 sec)
結果の確認
DESC foods2; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | food_name | varchar(20) | YES | | NULL | | | price | varchar(50) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
「color」カラムが削除されていることが確認できます。
「ALTER TABLE」ステートメントの使用方法は以上です。実際にテーブルを作成してみた上で、テーブル名やカラム定義などの編集に挑戦してみましょう。
まとめ
今回の記事では、MySQLのALTER TABLEステートメントの主な機能をご紹介していきました。テーブルを作成してレコードがすでに登録されている場合、新たにテーブルを作成し直すのは手間です。そんなときには今回学習した「ALTER TABLE」ステートメントを駆使してみてくださいね。
【関連記事】
▶︎MySQL初心者にマスターしてほしいコマンドラインからの使用方法
▶︎MySQL初心者にマスターしてほしいコマンドラインからの使用方法
▶︎リレーショナルを実現するSQLのコマンド、LEFT OUTER JOINを徹底解説
カラム定義の編集という言葉でピンとこない人もいるかもしれません。ここでできることを具体的に言うと、以下の2種類です。
カラム名とカラム定義の2つが変更できる構文と、カラム定義のみを変更する構文があるため、どちらも覚えておくと必要に応じて使い分けられるため、おすすめです。