【MySQL】カラム定義の操作(ALTER TABLE) - カラム定義の追加・変更・削除
MySQLにおけるカラム定義の操作について解説します。
検証環境
カラム定義の操作
テーブルのカラムは追加・変更・削除が可能です。
これらの操作はALTER TABLE
文を使います。
追加
テーブルに新規カラムを追加できます。
基本構文
ALTER TABLE テーブル名 ADD カラム定義
サンプル
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
___ih_hl_start
mysql> ALTER TABLE items ADD price INT DEFAULT 0;
___ih_hl_end
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| price | int | YES | | 0 | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
10行目でitems
テーブルにprice
カラムを追加しました。
14行目以降のテーブル情報からも正常にカラムが追加できたことが分かります。
変更
カラム定義の変更はカラム名の変更有無によって2パターンあります。
カラム名の変更あり
基本構文
ALTER TABLE テーブル名 CHANGE 現在のカラム名 新しいカラム名 定義
サンプル
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| price | int | YES | | 0 | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
___ih_hl_start
mysql> ALTER TABLE items CHANGE name name_en VARCHAR(20) NOT NULL;
___ih_hl_end
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC items;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name_en | varchar(20) | NO | | NULL | |
| price | int | YES | | 0 | |
+---------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
11行目でitems
テーブルのname
カラムをname_en
カラムに変更しました。
15行目以降のテーブル情報からも正常にカラムを変更できたことが分かります。
カラム名の変更なし
基本構文
ALTER TABLE テーブル名 MODIFY カラム名 定義
サンプル
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| price | int | YES | | 0 | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
___ih_hl_start
mysql> ALTER TABLE items MODIFY name VARCHAR(50) NOT NULL;
___ih_hl_end
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| price | int | YES | | 0 | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
11行目でitems
テーブルのname
カラムの定義を変更しました。
15行目以降のテーブル情報からも正常にカラムの定義を変更できたことが分かります。
削除
テーブルからカラムを削除できます。
基本構文
ALTER TABLE テーブル名 DROP カラム名
サンプル
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| price | int | YES | | 0 | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
___ih_hl_start
mysql> ALTER TABLE items DROP price;
___ih_hl_end
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
11行目でitems
テーブルのprice
カラムを削除しました。
15行目以降のテーブル情報からも正常にカラムを削除できたことが分かります。