SQL 基础教程
SQL 连接
SQL 高级教程
SQL 参考资料

SQL 克隆

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

克隆或复制表

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

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

第 1 步:创建一个空表

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

CREATE TABLE new_table LIKE original_table;

第 2 步:将数据插入表中

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

INSERT INTO new_table SELECT * FROM original_table;

让我们使用 MySQL 命令行工具克隆表。

假设我们的数据库中有一个 employees 表,其中包含以下记录:

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

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

mysql> CREATE TABLE employees_clone LIKE employees;

现在,执行另一个 SQL 语句,将 employees 表中的所有记录插入到 employees_clone 表中。 执行此语句后,您将获得 employees_clone 表,它是 employees 表的精确副本或副本

mysql> INSERT INTO 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 语法可以快速创建任何表的简单副本,该副本仅包含源表的结构和数据。

Advertisements