MySQL > テーブルの変更(alter table)

更新日 2015-03-10
広告
ALTER TABLEでテーブル定義を変更する方法を紹介します。

テーブル名の変更

テーブル名を変更できます。 テーブル名"current_table"を"new_table"に変更する例を示します。
mysql> ALTER TABLE current_table RENAME TO new_table;

カラム名の変更

'name'というカラム名を、'username'というカラム名に変更する例を示します。nameカラムはvarchar(256)型とします。
mysql> ALTER TABLE test_table CHANGE NAME username varchar(256);
カラム名と一緒に、データ型も変更できます。 データ型を変えない場合でも、データ型を指定する必要があります。

カラムの追加

test_tableというテーブルに、valueカラム(double型)を追加する場合の例を示します。
mysql> ALTER TABLE test_table ADD value DOUBLE;
Query OK, 10 rows affected (0.00 sec)
Records: 10  Duplicates: 0  Warnings: 0
test_tableの一番最後にカラムが追加されます。 カラムの挿入箇所を指定したい場合は、以下のようにします。
mysql> ALTER TABLE test_table ADD value DOUBLE AFTER somecolumn;

上記の場合、somecolumnカラムの右側に、valueカラムが追加されます。

テーブルの先頭(左端)にカラムを追加したい場合は、以下のようにします。

mysql> ALTER TABLE test_table ADD value DOUBLE FIRST;

カラムの削除

カラムを削除することも可能です。 test_tableテーブルから、nameカラムを削除する場合の例を示します。
mysql> ALTER TABLE test_table DROP name;

unique制約の追加

以下のテーブルがあるとします。
mysql> describe test_table;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| num_docs | bigint(20)   | NO   |     | NULL    |                |
| term     | varchar(255) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
termカラムにunique制約を追加します。
mysql> alter table test_table add unique (term);
すでに、termカラムに重複した値が登録されているとエラーになります。
ERROR 1062 (23000): Duplicate entry 'VAR' for key 'term'

NULL制約の解除

以下のテーブルがあるとします。
mysql> describe rank;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| abst        | varchar(255) | YES  |     | NULL    |                |
| num_vote    | int(11)      | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
以下のようにすることで、num_voteカラムのNULL制約を解除できます。
mysql> alter table rank modify column num_vote int(11);
Null項目が'YES'になるはずです。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system