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 語法快速建立僅包含源表的結構和資料的任何表的簡單副本。