MySQLでカラムの追加方法を解説!複数や位置を指定して追加

WEBアプリケーションを開発する上でDB操作の知識は必須です。作成済みのテーブルに対して、カラムを追加したり、変更したり、削除する必要がある場面が出てきます。この記事ではMySQLで既存のテーブルに対して、カラムの追加をする方法を紹介しています。

コンテンツ [表示]

  1. 1MySQLでカラム追加する方法
  2. 1.1カラムを追加する方法
  3. 1.2位置を指定してカラムを追加する方法
  4. 1.3複数カラムを追加する方法

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つのカラムを同時に追加することができました。

GeekHive採用サイト

関連記事