使用 MySQL RENAME TABLE 语句重命名表
在本文中,您将了解如何使用 MySQL RENAME TABLE
语句和 ALTER TABLE
语句重命名一个表。
有时候,您会由于一些原因修改一个现有的表的名称。比如:
- 您在创建表的时候使用了错误的表名。
- 您需要将表名更改为一个更有意义的名称。
- 产品的需求发生变化,需要将表名更改以适应新的业务。
- 您所在的团队使用了新的命名规则,您需要重命名那些不符合新规则的表。
MySQL 提供了 RENAME TABLE
语句用以重命名表。除此之外,您还可以使用 ALTER TABLE
语句重命名表。
MySQL 重命名表的注意事项
重命名表是一个简单的动作,但是它可能会带来一系列的问题。如果您没有同步修改那些用到此表的代码,则他们可能不能正常运行。
您需要同步修改的代码可能包括:
因此,当您打算修改一个表名的时候,您需要首先从整体上进行评估。然后,再决定是否进行重命名表。一旦您决定了要重命名一个表,您需要把需要同步修改的地方整理清楚。
MySQL 重命名表的语法
您可以按照如下的语法使用 RENAME TABLE
语句重命名一个表:
RENAME TABLE
old_table_name TO new_table_name
[, old_table_name2 TO new_table_name2];
您也可以按照如下语法使用 ALTER TABLE
语句重命名表:
ALTER TABLE old_table_name
RENAME TO new_table_name;
这里:
old_table_name
是需要重命名的表。new_table_name
是新的表名。
RENAME TABLE
语句和 ALTER TABLE
语句也可以用来重命名视图。
RENAME TABLE
语句和 ALTER TABLE
语句也存在一些不同:
RENAME TABLE
语句更加简洁。- 您可以在一个
RENAME TABLE
语句中同时重命名多个表。 RENAME TABLE
语句不可以用来重命名临时表,而ALTER TABLE
语句可以用来重命名临时表。
MySQL 重命名表实例
这个实例演示了如何在 MySQL 中重命名一个表。
假设,我们有一个用户表 user
。 因为您所在的团队制定了新的命名规则,所有的实体表需要以复数形式命名,因此您需要将 user
表重命名为 users
。
我们使用以下语句在 testdb
数据库中 创建一个 user
表 以实践我们的实例:
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int NOT NULL DEFAULT '20',
`email` varchar(255) NOT NULL,
`phone` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
如果您没有 testdb
数据库,请先使用如下语句创建数据库并选择数据库:
CREATE DATABASE testdb;
use testdb;
创建表后,您可以使用 SHOW TABLES
语句查看表是否创建成功:
SHOW TABLES LIKE 'user%';
+--------------------------+
| Tables_in_testdb (user%) |
+--------------------------+
| user |
+--------------------------+
要将 user
表重命名为 users
,请运行以下语句:
RENAME TABLE user TO users;
创建表后,您可以使用 SHOW TABLES
语句查看表:
SHOW TABLES LIKE 'user%';
+--------------------------+
| Tables_in_testdb (user%) |
+--------------------------+
| users |
+--------------------------+
现在, 我们看到 testdb
数据库中已经没有了 user
表,而只有 users
表。
当然,您也可以使用 ALTER TABLE
语句将 user
表重命名为 users
,如下:
ALTER TABLE user RENAME TO users;
结论
MySQL 提供了 RENAME TABLE
和 ALTER TABLE
语句重命名表。
请记住,在重命名一个表的时候,此表中不能有未完成的事务,并且此表不能是锁定状态。