MySQLでカラム名を変更する方法をご紹介!

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

コンテンツ [表示]

  1. 1MySQLでカラム名を変更する方法
  2. 1.1カラム名を変更する
  3. 1.2カラム定義のみをする

MySQLでカラム名を変更する方法

MySQLで既存のカラム名(列名)を変更する方法を紹介していきます。

まず下記のようなusersテーブルを用意しました。確認してみましょう。

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    |                |
| created_at | datetime    | YES  |     | NULL    |                |
| updated_at | datetime    | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql>

カラム名を変更する

まずはカラム名(列名)のみを変更する方法を紹介します。

ここでは、emailというカラム名をmail_addressというカラム名をリネームしてみたいと思います。

カラム名のみを変更する

ALTER TABLE テーブル名 CHANGE COLUMN 既存カラム名 新しいカラム名 型名 (オプション); 

上記のコマンドでカラム名を変更することができます。

注意点として型名もしっかりと指定しないとエラーとなって変更することができません。

mysql> ALTER TABLE users CHANGE COLUMN email mail_address;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB 
server version for the right syntax to use near '' at line 1

型名もしっかりした上でコマンドを実行してみましょう。

mysql> ALTER TABLE users CHANGE COLUMN email mail_address varchar(30);

Query OK, 0 rows affected (0.02 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    |                |
| mail_address | varchar(30) | YES  |     | NULL    |                |
| created_at   | datetime    | YES  |     | NULL    |                |
| updated_at   | datetime    | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

emailカラムをmail_addressカラムに変更することができました。

カラム定義のみをする

次にカラム定義のみを変更してみたいと思います。

下記コマンドを実行することで可能です。

カラム定義のみを変更する

ALTER TABLE テーブル名 MODIFY カラム名 型名;

カラム名を指定して、変更したい型名を指定してあげるだけで定義を変更することができます。

mysql> ALTER TABLE users MODIFY mail_address varchar(50);

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    |                |
| mail_address | varchar(50) | YES  |     | NULL    |                |
| created_at   | datetime    | YES  |     | NULL    |                |
| updated_at   | datetime    | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

ちゃんとmail_addressのカラム定義のみを変更することができましたね。

GeekHive採用サイト

関連記事