在 MySQL 中,RENAME TABLE 語句不僅能重命名表,還能實現跨資料庫移動、多表原子性互換名稱。本文整理最常用的三種場景與標準語法,幫助 DBA 與開發人員快速完成表結構調整。
RENAME TABLE [db1.]old_table TO [db2.]new_table [, ...];
將 db_a 下的 old_table 移動到 db_b 並改名為 new_table:
RENAME TABLE db_a.old_table TO db_b.new_table;
等效操作:ALTER TABLE db_a.old_table RENAME TO db_b.new_table;(單表時兩者無差異)。
在當前資料庫中將 old_table 改為 new_table:
RENAME TABLE old_table TO new_table;
利用臨時表名 tmp_table 作為中介,單條語句完成互換,避免中間狀態被其他會話看到:
RENAME TABLE old_table TO tmp_table,
new_table TO old_table,
tmp_table TO new_table;
優勢:無需應用層協調,元數據層面瞬間完成切換,適合藍綠部署、版本切換等場景。
Table 'db.new_table' already exists。RENAME TABLE(會隱式提交)。ALTER、DROP 權限及新表 CREATE、INSERT 權限。SHOW CREATE TABLE old_table\G。SHOW TABLES LIKE 'new_table'; SELECT COUNT(*) FROM new_table LIMIT 1;。SET FOREIGN_KEY_CHECKS=0; 再重命名,完成後恢復檢查。RENAME TABLE 是 MySQL 中靈活且高效的元數據操作工具,掌握其多表原子重命名特性,能大幅簡化表遷移、版本切換等運維工作。