MySQLでカラムの追加方法を解説!複数や位置を指定して追加
WEBアプリケーションを開発する上でDB操作の知識は必須です。作成済みのテーブルに対して、カラムを追加したり、変更したり、削除する必要がある場面が出てきます。この記事ではMySQLで既存のテーブルに対して、カラムの追加をする方法を紹介しています。
WEBアプリ開発を行う上で、コマンドでのDB操作を行う機会は多いです。
この記事ではDB操作の1つカラムをコマンドで追加する方法を紹介しています。
また、MySQLのカラムとは列やフィールドと同じ意味です。
MySQLでカラム追加する方法
今回は作成済みのusers
テーブルを使って、カラムの追加を行います。
users
テーブルの項目を確認してみましょう。
mysql> Describe users;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql>
カラムを追加する方法
まずはシンプルにカラムを追加してみたいと思います。
下記コマンドでカラムの追加を行います。
カラムを追加する
ALTER TABLE テーブル名 ADD カラム名 型名 オプション;
ここではusers
テーブルにint
型のage
カラムを追加してみましょう。
mysql> ALTER TABLE users ADD age int;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
コマンドの実行に成功しました。テーブルの項目を確認してみましょう。
mysql> Describe users;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
mysql>
ちゃんとage
カラムが追加されていますね。
位置を指定してカラムを追加する方法
上記で確認したようにデフォルトでは最後にカラムが追加されます。
次はカラムの追加する位置を指定してみましょう。
位置を指定してカラムを追加する
ALTER TABLE テーブル名 ADD カラム名 型名 オプション 位置;
最初に紹介したコマンドの末尾に位置を追記するだけです。
具体的にどう位置を指定するのかというと、一番最初に追加したい場合はFIRST
と指定し、特定のカラムの後に追加したい場合はAFTER カラム名
と指定してあげることで位置を指定しながらカラムの追加が行えます。
実際に位置を指定してカラムを追加してみましょう。users
テーブルのname
カラムの後にemail
カラムを追加してみたいと思います。
mysql> ALTER TABLE users ADD email varchar(30) AFTER name;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> Describe users;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| email | varchar(30) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql>
name
カラムの後でage
カラムよりも前の位置を指定してemail
カラムを追加することができました。
複数カラムを追加する方法
最後に複数カラムを同時に追加してみたいと思います。
とはいっても簡単で今までほとんど変わりません。下記のコマンドで複数カラムを同時に追加できます。
複数のカラムを追加する
ALTER TABLE テーブル名 ADD (カラム1 型名1, カラム2 型名2);
カンマ区切りを増やすことで、3つでも4つでも同時にカラムの追加が行えます。
それでは実際にusers
テーブルにdatetime
型のcreated_at
カラムとupdated_at
カラムを同時に追加してみましょう。
mysql> ALTER TABLE users ADD (created_at datetime, updated_at datetime);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> Describe users;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| email | varchar(30) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)
mysql>
2つのカラムを同時に追加することができました。
