ALTER TABLEいろいろ。
Advertisements
以下のテーブルを色々いじってみる。
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(100) | YES | | NULL | | | sentence | text | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 4 rows in set (0.03 sec)
カラムのデータ型を変更する
構文
ALTER TABLE テーブル名 MODIFY カラム名 データ型;
ALTER TABLE test1 MODIFY author VARCHAR(200);
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(200) | YES | | NULL | | | sentence | text | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 4 rows in set (0.03 sec)
このように変更が確認できる。
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(100) | YES | | NULL | | | sentence | text | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 4 rows in set (0.03 sec)
このテーブルに日付カラムを追加してみる。
構文
ALTER TABLE テーブル名 ADD カラム名 データ型;
mysql> ALTER TABLE test1 ADD hizuke DATE;
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(200) | YES | | NULL | | | sentence | text | YES | | NULL | | | hizuke | date | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 5 rows in set (0.03 sec)
カラム名を変更する
ALTER TABLE テーブル名 CHANGE 変更前カラム名 変更後カラム名 変更後データ型;
先ほど作った「hizuke」カラムを「date」に変更してみる。
mysql> ALTER TABLE test1 CHANGE hizuke date DATE;
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(200) | YES | | NULL | | | sentence | text | YES | | NULL | | | date | date | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 5 rows in set (0.02 sec)
カラムを削除する
まずはいらないカラムを追加してみる。
mysql> ALTER TABLE test1 ADD hoge VARCHAR(100);
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(200) | YES | | NULL | | | sentence | text | YES | | NULL | | | date | date | YES | | NULL | | | hoge | varchar(100) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 6 rows in set (0.03 sec)
次にhogeカラムを削除する。
mysql> ALTER TABLE test1 DROP hoge;
mysql> desc test1; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | author | varchar(200) | YES | | NULL | | | sentence | text | YES | | NULL | | | date | date | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ 5 rows in set (0.01 sec)
見事にhogeが削除された。