MySQLでテーブル名を変更するSQL文

MySQLでテーブル名を変更するSQL文

MySQLを使用していると、テーブル名が規則や標準に合っていないケースによく出会います。テーブルにすでに大量のデータがある場合、もっとも直接的な方法は、テーブルを作り直してデータをインポートすることではなく、既存のテーブルをそのままリネームすることです。

MySQL 5.0以降では、ALTER TABLE ... RENAME TO ... を使ってテーブル名を変更できます。

ALTER TABLE table_name RENAME TO new_table_name;

たとえば、admin_user テーブルを a_user に変更する場合は次のようにします。

ALTER TABLE admin_user RENAME TO a_user;

同じ操作は RENAME TABLE 文でも実行できます。

RENAME TABLE admin_user TO a_user;

実行前には、次の点を確認しておくことをおすすめします。

  1. 新しいテーブル名が存在しないことを確認し、名前の衝突を避ける。
  2. アプリケーションコード、ビュー、ストアドプロシージャ、定期実行タスクなどが旧テーブル名を参照していないか確認する。
  3. 本番環境で操作する前にデータベースをバックアップする。少なくとも対象テーブルはバックアップしておく。
  4. テーブルが大きい場合や業務システムがそのテーブルにアクセスしている場合は、できるだけアクセスの少ない時間帯に実行する。

まず、次のSQLでテーブルが存在するか確認できます。

SHOW TABLES LIKE 'admin_user';
SHOW TABLES LIKE 'a_user';

リネーム後にも検証します。

SHOW TABLES LIKE 'a_user';
SELECT COUNT(*) FROM a_user;

これで、既存のデータを保持したまま、テーブル名だけを変更できます。

Leave a Reply