SQL 克隆表

在本教程中,你将学习如何创建现有表的副本。

克隆或复制表

当你只想创建现有表的精确副本或克隆以测试或执行某些操作而不影响原始表时,可能会出现这种情况。

以下部分介绍了如何通过几个简单的步骤完成此操作。

第 1 步:创建一个空表

首先使用以下语句根据原始表的定义创建一个空表。它还包括原始表中定义的列属性和索引:

CREATE TABLE new_table LIKE original_table ; 

第 2 步:将数据插入表中

现在,使用以下语句使用原始表中的数据填充空表:

INSERT new_table SELECT * FROM original_table ; 

让我们使用 MySQL 命令行工具来复制表。

考虑一下我们在数据库中有一个 employee 表,它有以下记录:

Table: employees

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

执行以下 SQL 语句,它将根据现有 employees 数据库表的定义创建一个空表 employees_clone

mysql> CREATE TABLE employees_clone LIKE employees; 

现在,执行另一个 SQL 语句,将 employees 表中的所有记录插入 employees_clone 表。执行该语句之后,你会得到 employees_clone 表,该表是完全相同的副本或复制 employees 表。

mysql> INSERT employees_clone SELECT * FROM employees; 

简单的克隆

但是,如果你只想从另一个表创建表而不考虑任何列属性和索引,则可以使用简单的一行语句:

CREATE TABLE new_table SELECT * FROM original_table ; 

以下命令创建 employees 表的简单副本。

mysql> CREATE TABLE employees_dummy SELECT * FROM employees; 

提示: 使用 CREATE TABLE ... SELECT 语法快速创建仅包含源表的结构和数据的任何表的简单副本。