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: 0test_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 まで。