本章将学习如何创建表的副本。
完整复制表
有时想创建一个表的精确副本,以便在不影响原始表的情况下,测试或执行某些操作。
下面将介绍完整复制表的步骤。
步骤1: 创建一个空表
根据原始表的定义创建一个空表,除了复制字段,还复制了字段属性和索引:
CREATE TABLE new_table LIKE original_table;
步骤2: 将数据插入表中
用原始表中的数据填充空表:
INSERT 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表。
mysql> INSERT employees_clone SELECT * FROM employees;
执行后,您将得到employees_clone表,它是employees表的精确副本。
简单复制
如果您只是想简单复制一个表,无需复制字段属性和索引,可以使用简单的一行语句:
CREATE TABLE new_table SELECT * FROM original_table;
下面的命令创建employees表的简单副本。
mysql> CREATE TABLE employees_dummy SELECT * FROM employees;
使用CREATE TABLE ... SELECT
语法简单复制表,只复制表结构和数据。