MySQL重命名表的用法


Mysql 数据库

有时因客户需求或业务改变,需要重命名一张表,本文记录重命名表的相关用法以及扩展用法。

1.重命名表的两种方法

-- RENAME TABLE 语法:
RENAME TABLE old_table_1 TO new_table_1,old_table_2 TO new_table_2, ... ;

-- ALTER TABLE 语法
ALTER TABLE old_table RENAME new_table;

2.扩展

通过重命名表,可以将这个表从一个数据库移动到另一个数据库中:

RENAME TABLE os.table_name TO os-cs.table_name;
ALTER TABLE os.table_name rename os-cs.table_name;

然而:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘-cs.table1’ at line 1

如果出现这样的错误则要加上几个 ``

RENAME TABLE `os`.`table_name` TO `os-cs`.`table_name`;
ALTER TABLE `os`.`table_name` rename `os-cs`.`table_name`;

到这一步,有的小伙伴会想:我要是把全库的表转移到另一个库中,也通过这种方法可以吗?

当然可以,不过还是不建议数据量大的数据库这么做。如果数据量小,或者说测试玩玩倒是可以。

-- 这里是批量打印出某个数据库中的表全部转移至另一个数据库中的语句
SELECT
 CONCAT( 'rename table 要导出的库名.', TABLE_NAME, ' to 要导入的库名.', TABLE_NAME, ';' ) 
FROM
 information_schema.TABLES 
WHERE
 TABLE_SCHEMA = '库名';

注意事项:

  • 如果该表具有触发器,则无法将该表通过重命名的方法转移到另一个库中。
  • 要注意重命名的表有没有依赖其他的表或者外键约束,仔细检查。
  • ALTER TABLE 可以重命名临时表(TEMPORARY TABLE),RENAME TABLE 不可以 。
  • RENAME TABLE 可以在单个语句中重命名多个表,ALTER TABLE 只能重命名一个。
  • RENAME TABLE 适用于视图,但不能将视图重命名转移到其他数据库中,ALTER TABLE 不能重命名视图。
  • 重命名表一般时间很短,要是时间过长,则要检查一下链接是否正常
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐