MySQL 重命名表

2024年03月26日 MySQL 重命名表 极客笔记

MySQL 重命名表

有时候我们的表名是没有意义的,所以需要重命名或更改表的名字。MySQL提供了一个有用的语法,可以在当前数据库中重命名一个或多个表。

语法

以下是用于更改表名的语法:

mysql> RENAME old_table TO new_table;

在这里,我们必须确保 new_table_name 不存在,并且 old_table_name 应该存在于数据库中。否则,它会抛出一个错误消息。这是为了确保在执行此语句之前表没有被锁定,以及没有活动事务。

注意:如果我们使用RENAME TABLE语句,需要对现有表具有ALTER和DROP TABLE权限。此外,此语句不能更改临时表的名称。

我们还可以使用MySQL的 RENAME TABLE 语句来一次性更改多个表的名称,如下所示:

RENAME TABLE old_tab1 TO new_tab1,
             old_tab2 TO new_tab2, old_tab3 TO new_tab3; 

MySQL 8.0.13 版本开始,我们可以使用LOCK语句和WRITE LOCK子句更改旧表名。例如,以下是有效的语句:

mysql> LOCK TABLE old_tab_name1 WRITE;
RENAME TABLE old_tab_name1 TO new_tab_name1,
             new_tab_name1 TO new_tab_name2;

以下陈述是禁止的:

mysql> LOCK TABLE old_tab_name1 READ;
RENAME TABLE old_tab_name1 TO new_tab_name1,
             new_tab_name1 TO new_tab_name2;

MySQL 8.0.13版本之前,我们无法更改使用LOCK TABLE语句锁定的表名。

MySQL还使用RENAME TABLE语句将表从一个数据库移动到另一个数据库,如下所示:

mysql> RENAME TABLE current_db.tablel_name TO other_db.tablel_name;

MySQL RENAME TABLE Example

让我们通过各种示例来了解MySQL中RENAME TABLE语句的工作原理。假设我们有一个名为EMPLOYEE的表,由于某种原因,需要将其更改为名为CUSTOMER的表。

表名:employee

接下来,执行以下语法来更改表名:

mysql> RENAME employee TO customer;

输出结果

我们将看到名为“员工”的表将更改为一个名为“客户”的新表:

在上面的输出中,我们可以看到,如果在执行RENAME TABLE语句后使用表名employee,将会抛出错误消息。

如何重命名多个表

MySQL中的RENAME TABLE语句还允许我们在一条语句中更改多个表名。请参考下面的语句:

假设我们的数据库 myemployeedb 中有以下表:

如果我们想把表名customer改成employee,把表名shirts改成garments,执行以下语句:

mysql> RENAME TABLE customer TO employee, shirts TO garments;

输出

我们可以看到,表名customer已成功重命名为employee,表名shirts已成功重命名为garments。

使用ALTER语句重命名表

ALTER TABLE语句也可以用于重命名当前数据库中的现有表。以下是ALTER TABLE语句的语法:

ALTER TABLE old_table_name RENAME TO new_table_name;

查看以下查询,将现有的表名 garments 更改为新的表名 shirts:

mysql> ALTER TABLE garments RENAME TO shirts:

输出

在这里,我们可以看到表名为服装被重命名为表名为衬衫。

如何重命名临时表

临时表允许我们保留临时数据,该数据仅在当前会话中可见和可访问。因此,首先,我们需要使用以下语句创建一个临时表:

mysql> CREATE TEMPORARY TABLE Students( name VARCHAR(40) NOT NULL, total_marks DECIMAL(12,2) NOT NULL DEFAULT 0.00, total_subjects INT UNSIGNED NOT NULL DEFAULT 0);  

接下来,将值插入到这个表中:

mysql> INSERT INTO Students(name, total_marks, total_subjects) VALUES ('Joseph', 150.75, 2), ('Peter', 180.75, 2);

接下来,运行show table命令来检查临时表:

mysql> SELECT * FROM Students;

现在,运行以下命令来更改临时表的名称:

mysql> RENAME TABLE Students TO student_info;

它将抛出一个错误消息,如下所示:

因此,MySQL允许使用ALTER table语句重命名临时表:

mysql> ALTER TABLE Students RENAME TO student_info;

输出

本文链接:http://so.lmcjl.com/news/449/

展开阅读全文
上一篇:MySQL 创建用户 下一篇:MySQL TRUNCATE 表格