將數據從現有表復制到新表是非常有用的,在某些情況下,例如:備份數據和復制生產數據用于開發和測試。
要將數據從表復制到新表,請使用Create TABLE和Select語句,如下所示:
Create TABLE new_table
Select col, col2, col3
FROM
existing_table;
首先,MySQL使用Create TABLE語句中指定新創建表的名稱。 新表的結構由Select
語句選擇的結果集定義。 然后,MySQL將來自Select
語句的數據填充到新表中。
要將部分數據從現有表復制到新表,可在Select
語句中使用Where子句指定條件限制,如下所示:
Create TABLE new_table
Select col1, col2, col3
FROM
existing_tableWhere
conditions;
在創建之前檢查要創建的表是否已經存在是非常重要的。 為此,在Create TABLE
語句中使用IF NOT EXIST
子句。 將數據從現有表復制到新表的完整命令如下:
Create TABLE new_table
Select col1, col2, col3
FROM
existing_tableWhere
conditions;
注意上面的語句只是復制表及其數據。 它不復制與表相關聯的其他數據庫對象,例如:索引,主鍵約束,外鍵約束,觸發器等。
要復制一個表以及表的所有從屬對象數據,請使用以下語句:
Create TABLE IF NOT EXISTS new_table LIKE existing_table;Insert new_tableSelect * FROM existing_table;
我們需要執行兩個語句。第一個語句通過復制現有表來創建一個新表new_table
。 第二個語句將現有表中的數據插入到new_table
中。
MySQL復制表示例
以下語句將數據從office
表復制到studymysql
數據庫中的一個名稱為offices_bk
的新表。
Create TABLE IF NOT EXISTS studymysql.office_bk
Select * FROM
studymysql.office;
我們可以通過查詢office_bk
表中的數據來驗證復制的結果,如下所示:
Select
*FROM
studymysql.office_bk;
執行上的查詢語句,結果如下所示 -

如果只想復制廣東省辦事處時,可以在Select
語句的Where
子句中指定條件,如下所示:
Create TABLE IF NOT EXISTS office_gdSelect *
FROM
studymysql.officeWhere
province = '廣東'
以下語句從office_gd
表中查詢獲取所有數據。
Select
*FROM
office_gd;
執行上的查詢語句,結果如下所示 -

假設,我們不僅要復制數據,而且還要復制與office
表關聯的所有數據庫對象,那么可以使用以下語句:
Create TABLE office_dup LIKE office;Insert office_dupSelect * FROM studymysql.office;
MySQL復制表到另一個數據庫
有時,可能想要將表復制到其他數據庫中。 在這種情況下,可使用以下語句:
Create TABLE destination_db.new_table
LIKE source_db.existing_table;Insert destination_db.new_table
Select *FROM source_db.existing_table;
第一個語句通過從源數據庫(source_db)復制現有表(現有表)到目標數據庫(destination_db)中創建一個新表new_table。
第二個語句將數據從源數據庫(source_db)中的現有表復制到目標數據庫(destination_db)中的新表。
讓我們看看下面的例子。
首先,我們使用以下語句創建一個名稱為test
的數據庫(已存在的話,就不用再創建了):
Create DATABASE IF NOT EXISTS test;
第二步,我們通過將studymysql數據庫中的office
表復制其結構到test
數據庫中并創建一個office
表。
Create TABLE test.office LIKE studymysql.office;
第三步,我們將數據從studymysql.office
表復制到test.office
表中。
Insert test.officeSelect *FROM studymysql.office;
讓我們查詢驗證test.office
表中的數據。執行以下查詢語句并查看結果 -
Select
*FROM
test.office;

在本教程中,我們向您展示了在數據庫中如何復制表以及從一個數據庫中復制表到另一個數據庫中的表的一些技術和方法。在開發或測試應用程序時,復制線上實際運行的數據表到測試環境中,這些方法還是很實用的