English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
データベースのテーブル名を変更する場合や、テーブルのフィールドを変更する場合、MySQLのALTERコマンドを使用する必要があります。
本章のチュートリアルを開始する前に、まずテーブルを作成しましょう。テーブル名は:testalter_tbl。
root@host# mysql -u root -p パスワード; パスワードを入力してください:******* mysql> use w3codebox; Database changed mysql> create table testalter_tbl -> ( -> i INT, -> c CHAR(1) -> ); Query OK, 0 rows affected (0.05 sec) mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | フィールド | タイプ | NULL | キー | デフォルト | エクストラ | +-------+---------+------+-----+---------+-------+ | i | int(11) | YES | | NULL | | | c | char(1) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 セット内の行(0.00秒)
以下のコマンドは、ALTER コマンドと DROP 節を使用して、上記で作成したテーブルの i フィールドを削除するために使用されています:
mysql> ALTER TABLE testalter_tbl DROP i;
データベースにフィールドが1つしか残っていない場合、DROPを使用してフィールドを削除することはできません。
MySQLでは、ADD 節を使用してデータベースに列を追加します。以下の例では、テーブル testalter_tbl に i フィールドを追加し、データ型を定義しています:
mysql> ALTER TABLE testalter_tbl ADD i INT;
以上のコマンドを実行すると、i フィールドが自動的にデータベースのフィールドの末尾に追加されます。
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | フィールド | タイプ | NULL | キー | デフォルト | エクストラ | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 セット内の行(0.00秒)
新しいフィールドの位置を指定する必要がある場合、MySQLが提供するキーワード FIRST(最初の列に設定)または AFTER フィールド名(特定のフィールドの後に設定)を使用できます。
以下の ALTER TABLE ステートメントを試してみてください。成功後に SHOW COLUMNS を使用してテーブル構造の変更を確認します:
ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT FIRST; ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT AFTER c;
FIRST と AFTER キーワードは ADD と MODIFY 節で使用できます。したがって、データベースのフィールドの位置をリセットしたい場合は、まず DROP を使用してフィールドを削除し、ADD を使用してフィールドを追加して位置を設定する必要があります。
フィールドのタイプと名前を変更する必要がある場合、ALTER コマンドで MODIFY や CHANGE 節を使用できます。
例えば、フィールド c のタイプを CHAR(1) を CHAR(10)、以下のコマンドを実行できます:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
CHANGE 節を使用すると、構文が大きく変わります。 CHANGE キーワードの後には、変更したいフィールド名が続きます。次に新しいフィールド名とタイプを指定します。以下の例を試してみてください:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
現在フィールドjをBIGINTからINTに変更したい場合は、以下のSQL文を使用します:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
フィールドを変更する際には、値を含めるかどうか、またはデフォルト値を設定するかどうかを指定できます。
以下の例では、フィールドjをNOT NULLおよびデフォルト値として指定します:100 。
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
デフォルト値を設定しない場合、MySQLは自動的にNULLをデフォルト値として設定します。
フィールドのデフォルト値を変更するにはALTERを使用して、以下の例を試してみてください:
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | フィールド | タイプ | NULL | キー | デフォルト | エクストラ | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 セット内の行(0.00秒)
ALTERコマンドおよびDROP子句を使用して、フィールドのデフォルト値を削除することもできます。以下の例を試してみてください:
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | フィールド | タイプ | NULL | キー | デフォルト | エクストラ | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 セット内の行(0.00秒) テーブルタイプの変更:
データベーステーブルのタイプを変更するには、ALTERコマンドおよびTYPE子句を使用して完成できます。以下の例を試してみてください、テーブルtestalter_tblのタイプをMYISAMに変更します:
注意:データベーステーブルのタイプを確認するには、SHOW TABLE STATUS文を使用できます。
mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM; mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G *************************** 1. row **************** Name: testalter_tbl Type: MyISAM Row_format: Fixed Rows: 0 Avg_row_length: 0 Data_length: 0 Max_data_length: 25769803775 Index_length: 1024 Data_free: 0 Auto_increment: NULL Create_time: 2007-06-03 08:04:36 Update_time: 2007-06-03 08:04:36 Check_time: NULL Create_options: コメント: 1 row in set (0.00 sec)
データテーブルの名前を変更するには、ALTER TABLE文でRENAME子句を使用することができます。
以下の例を試してみてください:データテーブル testalter_tbl を alter_tbl にリネームします。
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
ALTERコマンドは、MySQLデータテーブルの索引の作成および削除にも使用できます。この機能については、次の章で説明します。