编辑这个页面须要登录或更高权限!

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

 employees_clone  employees;

现在,执行另一个SQL语句,它将来自employee表的所有记录插入employees_clone表。 执行完此语句后,您将获得employee_clone表,该表是employee表的精确副本或副本。

 employees_clone  *  employees;

简单克隆

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

CREATE TABLE new_table SELECT * FROM original_table;

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

 employees_dummy  *  employees;

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