Skip to content

Latest commit

 

History

History
170 lines (132 loc) · 2.76 KB

sql-statement-rename-table.md

File metadata and controls

170 lines (132 loc) · 2.76 KB
title summary aliases
RENAME TABLE
TiDB 数据库中 RENAME TABLE 的使用概况。
/docs-cn/dev/sql-statements/sql-statement-rename-table/
/docs-cn/dev/reference/sql/statements/rename-table/

RENAME TABLE

RENAME TABLE 语句用于重命名现有表和视图,支持同时重命名多个表及跨数据库重命名。

语法图

RenameTableStmt ::=
    'RENAME' 'TABLE' TableToTable ( ',' TableToTable )*

TableToTable ::=
    TableName 'TO' TableName

示例

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 兼容性

RENAME TABLE 语句与 MySQL 完全兼容。如发现任何兼容性差异,请尝试 TiDB 支持资源

另请参阅