在本教程中,您將學(xué)習(xí)如何創(chuàng)建現(xiàn)有表的副本。
在某些情況下,您可能只想創(chuàng)建一個(gè)現(xiàn)有表的精確副本或克隆以測試或執(zhí)行某些操作而又不影響原始表。
下一節(jié)將通過幾個(gè)簡單的步驟說明如何執(zhí)行此操作。
首先使用以下語句根據(jù)原始表的定義創(chuàng)建一個(gè)空表。它還包括原始表中定義的列屬性和索引:
CREATE TABLE new_table LIKE original_table;
現(xiàn)在,使用以下語句用原始表中的數(shù)據(jù)填充空表:
INSERT INTO new_table SELECT * FROM original_table;
讓我們使用MySQL命令行工具克隆表。
考慮我們employees的數(shù)據(jù)庫中有一個(gè)包含以下記錄的表:
+--------+--------------+------------+--------+---------+ | 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 | +--------+--------------+------------+--------+---------+
執(zhí)行以下SQL語句,它將基于現(xiàn)有employees數(shù)據(jù)庫表的定義創(chuàng)建一個(gè)空表employees_clone。
employees_clone employees;
現(xiàn)在,執(zhí)行另一個(gè)SQL語句,它將來自employee表的所有記錄插入employees_clone表。 執(zhí)行完此語句后,您將獲得employee_clone表,該表是employee表的精確副本或副本。
employees_clone * employees;
但是,如果只想從另一個(gè)表創(chuàng)建一個(gè)表而不考慮任何列屬性和索引,則可以使用簡單的一行語句:
CREATE TABLE new_table SELECT * FROM original_table;
以下命令創(chuàng)建employees表的簡單副本。
employees_dummy * employees;
提示:使用CREATE TABLE?...?SELECT語法可以快速創(chuàng)建僅包含源表的結(jié)構(gòu)和數(shù)據(jù)的任何表的簡單副本。