程序员社区

MySQL系列教程 --- 16、MySQL 重命名表(RENAME )

有时我们的表名没有意义,所以需要重命名或更改表名。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 语句在 MySQL 中的工作原理。假设我们有一个名为EMPLOYEE的表,由于某种原因,需要将其更改为名为CUSTOMER的表。

表名:employee

file

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

mysql> RENAME employee TO customer;  

输出

我们会看到名为“employee”的表会被改成一个新的表名“customer”:

file

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

如何重命名多个表

MySQL 中的 RENAME TABLE 语句还允许我们在单个语句中更改多个表名。请参阅以下声明:

假设我们的数据库“ myemployeedb ”具有以下表格:

file

如果我们要把表名customer改成employee,表名shirts改成wears,执行如下语句:

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

输出

可以看到,表名customer变成employee,表名shirts变成服装已经成功改名。

file

使用 ALTER 语句重命名表

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

ALTER TABLE old_table_name RENAME TO new_table_name;  

请参阅以下将现有表名服装更改为新表名衬衫的查询:

mysql> ALTER TABLE garments RENAME TO shirts:  

输出

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

MySQL Rename Table

如何重命名临时表

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

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;  

会抛出错误信息,如下图:

file

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

mysql> ALTER TABLE Students RENAME TO student_info;  

输出

file

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 16、MySQL 重命名表(RENAME )

一个分享Java & Python知识的社区