首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 複製表結構與資料的 10 種實用方法

     編輯:MySQL 資料庫相關知識

場景一:複製結構與資料到新表

CREATE TABLE new_table SELECT * FROM old_table;

⚠️ 缺點:新表不會保留主鍵、AUTO_INCREMENT 等屬性,需手動 ALTER TABLE 補充,易出錯。

場景二:僅複製表結構

-- 方法 1:WHERE 條件永假
CREATE TABLE new_table SELECT * FROM old_table WHERE 1=2;
-- 方法 2:LIKE 子句(推薦,保留索引/主鍵/預設值等)
CREATE TABLE new_table LIKE old_table;

場景三:結構相同表間複製資料

INSERT INTO new_table SELECT * FROM old_table;

場景四:結構不同表間複製指定欄位

INSERT INTO new_table (col1, col2, ...) SELECT col1, col2, ... FROM old_table;

場景五:SELECT INTO 複製結構(SQL Server 語法,MySQL 不支援)

-- MySQL 不支援此語法,僅供參考
SELECT * INTO table2 FROM table1 WHERE 1=2;

場景六:SELECT INTO 複製全部資料(同場景五,MySQL 不支援)

SELECT * INTO table2 FROM table1;

場景七:使用 SHOW CREATE TABLE 獲取建表語句

SHOW CREATE TABLE old_table;

複製輸出的 CREATE TABLE 陳述式,修改表名後執行,可建立完全相同的表(含索引、主鍵、引擎、字符集等)。

場景八:使用 mysqldump 導出導入

# 導出表結構與資料
mysqldump -u root -p db_name old_table > dump.sql
# 修改 dump.sql 中的表名,再導入
mysql -u root -p db_name < dump.sql

場景九:複製整個資料庫(所有表結構與資料)

mysql -u root -p -e "CREATE DATABASE new_db;"
mysqldump old_db -u root -p --skip-extended-insert --add-drop-table | mysql new_db -u root -p

場景十:跨資料庫複製表資料

-- 完全複製
INSERT INTO db1.table1 SELECT * FROM db2.table2;
-- 去重複製
INSERT INTO db1.table1 SELECT DISTINCT * FROM db2.table2;
-- 僅前 5 筆(MySQL 語法)
INSERT INTO db1.table1 SELECT * FROM db2.table2 LIMIT 5;

最佳實踐建議

  • 需保留索引/主鍵/自增屬性 → 用 CREATE TABLE ... LIKE ... + INSERT ... SELECT
  • 僅需快速建表且不在意索引 → CREATE TABLE ... SELECT ...
  • 跨庫/跨伺服器大量資料 → mysqldump 管道流式傳輸
  • 操作前務必備份,生產環境建議在從庫或維護窗口執行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved