既に作成済みのテーブルの指定した位置にカラムを追加するalter tableについて紹介していきます
前提条件
飲み物を管理するテーブルにカラムを追加していきます
使用するテーブル:drinksテーブル
テーブル構造を確認するSQLを実行する
show columns from drinks;
出力結果
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.026 sec)
条件
- id,nameの2つのカラムがある
- idカラムの後にpriceカラムを追加する
テーブルにカラムを追加する
構文
alter table テーブル名 add 追加するカラム名 データ型 after カラム名;
テーブル名:カラムを追加するテーブル名を指定する
追加するカラム名:指定したテーブルに新しく追加するカラム名を指定
データ型:追加するカラムのデータ型を指定する
カラム名:追加するカラムをどのカラムの後に挿入するかを指定する
構文のafterは省略することができる。カラムを挿入する位置を指定しないと一番最後に新しい列が挿入される
指定した位置に新規でカラムを追加する
指定した位置にカラムを追加する記述方法です。カラムを追加する場所を指定するにはafterを使用する必要があります。
使用するSQL文
alter table drinks add price int not null after id;
テーブル名にはdrinksを指定
追加するカラムはprice、データ型には整数型のint、Nullは許容しない
追加する位置はidカラムの後ろ
カラムを追加するときにオプション(制約)もつけることができる
データ型についてよくわからない場合には以下を参照
コードを入力してテーブル情報を確認すると
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| price | int(11) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.016 sec)
idカラムの後ろにpriceカラムが追加されていることがわかります
位置指定なしで新規にカラムを追加する
上記で追加したpriceカラムはいったん削除しました。再度priceカラムを追加していきます。今回はafterで追加位置を指定せずに省略してカラムを追加いたします。
使用するSQL文
alter table drinks add price int not null;
テーブル名にはdrinksを指定
追加するカラムはprice、データ型には整数型のint、Nullは許容しない
追加する位置は指定しません
コードを入力してテーブル情報を確認すると
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| price | int(11) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.012 sec)
各カラムの最後尾にpriceカラムが追加されたことがわかります。
新規で複数カラムを一括追加する
一度に複数のカラムを追加したい場合には各カラムを(,)カンマで区切ることで一括で追加することができます。また、追加するカラムと制約やデータ型を含めて全体をカッコ()で囲う必要があります。
使用するSQL文
alter table drinks add (price int, quantity int);
テーブル名にはdrinksを指定
追加するカラムはprice(価格)とquantity(個数)、データ型には整数型のint
追加する位置は指定しません
制約は個別に指定することができますが、今回は省きました。
コードを入力してテーブル情報を確認すると
+-------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| price | int(11) | NO | | NULL | |
|quantity| int(11) | NO | | NULL | |
+--------+--------------+------+-----+---------+----------------+
4 rows in set (0.014 sec)
各カラムの最後尾にpriceカラムとquantityカラムが追加されたことがわかります。