[MySQL] テーブル名を変更する

MySQLでテーブル名を変更するには、通常RENAME TABLEを利用します。

RENAME TABLE old_table TO new_table;

テーブル名の変更はSQLの標準規格には存在しません。そのため各DBが独自の実装をしているのが現状です。これもMySQLでの利用方法ですので、他のDBを使う際にはご注意ください。

テーブルの名称変更

RENAME TABLE

単純に名称を変更するだけであれば、RENAME TABLEで一発です。

RENAME TABLE old_table TO new_table;

テーブルだけではなくVIEWに対しても行うことができます。

ALTER TABLE

RENAME TABLEと同様の行為をALTER TABLEでも行うことができます。

ALTER TABLE old_table RENAME new_table;

テーブル内のカラムも同時に変更したいといった場合にはこちらを利用するのが良いでしょうか。

別のデータベースへ移動する

データベース名を付けてやると、データベース間を移動することも可能です。もちろん両方のデータベースを触れる権限は必要です。

RENAME TABLE db1.table_name TO db2.table_name;

テーブルの値を入れ替える

RENAME TABLEは複数のコピーを同時に記述できることを利用し、一時テーブルを使ったスワップに利用することもできます。以下では最終的にa_tableb_tableの内容が入れ替わります。

RENAME TABLE a_table TO tmp_table,  /* 最初に実行    A -> TMP */
             b_table TO a_table,    /* 2番目に実行   B -> A   */
             tmp_table TO b_table;  /* 最後に実行  TMP -> B   */

参考ページ