カラムの追加
最後尾に追加
以下のコマンドで最後尾に新しいカラムが追加される。追加されたカラムのフィールド値には初期値が設定される。
1 |
ALTER TABLE [テーブル名] ADD [フィールド名] [型]; |
以下、実行例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
mysql> select * from test; +------+------+ | name | age | +------+------+ | John | 32 | | Alex | 40 | +------+------+ 2 rows in set (0.00 sec) mysql> describe test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.01 sec) mysql> alter table test add occupation varchar(20); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> describe test; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | | occupation | varchar(20) | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> select * from test; +------+------+------------+ | name | age | occupation | +------+------+------------+ | John | 32 | NULL | | Alex | 40 | NULL | +------+------+------------+ 2 rows in set (0.00 sec) mysql> |
先頭に追加
FIRST
を指定すると、新たな列が先頭に追加される。
1 |
ALTER TABLE [テーブル名] ADD [フィールド名] [型] FIRST; |
指定位置への追加
AFTER
で指定したカラムの後に新たな列が追加される。
1 |
ALTER TABLE [テーブル名] ADD [フィールド名] [型] AFTER [基準カラム名]; |
カラムの変更
名称と型の変更
カラムの名前や型の変更ALTER
コマンドを使う。
CHANGE
でフィールド名と型を同時に変更する。
1 |
ALTER TABLE [テーブル名] CHANGE [フィールド名] [新フィールド名] [新しい型]; |
以下、実行例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> alter table test change name name varchar(20); Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> describe test; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | | occupation | varchar(20) | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> |
型のみの変更
型のみの変更はMODIFY
。
1 |
ALTER TABLE [テーブル名] MODIFY [フィールド名] [型]; |
以下、実行例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
mysql> describe test; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | | nation | varchar(10) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table test modify nation varchar(2); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> describe test; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | | nation | varchar(2) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> |
カラムの削除
以下のコマンドで、指定したカラムを削除できる。
1 |
ALTER TABLE [テーブル名] DROP COLUMN [フィールド名]; |
以下、実行例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
mysql> describe test; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | | occupation | varchar(20) | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table test drop column occupation; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> |