📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

RENAME TABLE

此语句用于重命名现有的表和视图,支持一次重命名多个表以及跨数据库重命名。

语法概要

RenameTableStmt
RENAMETABLETableToTable,
TableToTable
TableNameTOTableName

示例

CREATE TABLE t1 (a int);
Query OK, 0 rows affected (0.12 sec)
SHOW TABLES;
+----------------+ | Tables_in_test | +----------------+ | t1 | +----------------+ 1 row in set (0.00 sec)
RENAME TABLE t1 TO t2;
Query OK, 0 rows affected (0.08 sec)
SHOW TABLES;
+----------------+ | Tables_in_test | +----------------+ | t2 | +----------------+ 1 row in set (0.00 sec)

以下示例演示如何在跨数据库的情况下重命名多个表,假设数据库 db1db2db3db4 已经存在,且表 db1.t1db3.t3 已存在:

RENAME TABLE db1.t1 To db2.t2, db3.t3 To db4.t4;
Query OK, 0 rows affected (0.08 sec)
USE db1; SHOW TABLES;
Database changed Empty set (0.00 sec)
USE db2; SHOW TABLES;
Database changed +---------------+ | Tables_in_db2 | +---------------+ | t2 | +---------------+ 1 row in set (0.00 sec)
USE db3; SHOW TABLES;
Database changed Empty set (0.00 sec)
USE db4; SHOW TABLES;
Database changed +---------------+ | Tables_in_db4 | +---------------+ | t4 | +---------------+ 1 row in set (0.00 sec)

原子重命名可以用来交换表,确保在操作过程中表不会出现不存在的瞬间。

CREATE TABLE t1(id int PRIMARY KEY);
Query OK, 0 rows affected (0.04 sec)
CREATE TABLE t1_new(id int PRIMARY KEY, n CHAR(0));
Query OK, 0 rows affected (0.04 sec)
RENAME TABLE t1 TO t1_old, t1_new TO t1;
Query OK, 0 rows affected (0.07 sec)
SHOW CREATE TABLE t1\G
*************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE `t1` ( `id` int NOT NULL, `n` char(0) DEFAULT NULL, PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin 1 row in set (0.00 sec)

MySQL 兼容性

TiDB 中的 RENAME TABLE 语句与 MySQL 完全兼容。如果你发现任何兼容性差异,请 报告一个 bug

相关链接

文档内容是否有帮助?