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

MySQL 複制表結構四大模式速查:LIKE、SELECT WHERE 1=2、SELECT *、mysqldump

     編輯:MySQL 資料庫相關知識

四大核心命令對比

命令複製內容索引/約束觸發器/分區適用版本
CREATE TABLE new_tbl LIKE old_tbl;完整結構✅ 完整保留❌ 不複製4.0.25+
CREATE TABLE new_tbl SELECT * FROM old_tbl WHERE 1=2;列定義❌ 僅列類型❌ 不複製全版本
CREATE TABLE new_tbl SELECT * FROM old_tbl;結構 + 數據❌ 僅列類型❌ 不複製全版本
mysqldump -d db tbl | mysql -D target_db完整 DDL✅ 完整保留✅ 完整保留全版本

場景化選型指南

1. 建立測試/開發表 (需索引、約束一致)

CREATE TABLE dev_orders LIKE orders;
INSERT INTO dev_orders SELECT * FROM orders WHERE create_time > '2024-01-01';

2. 快速建立臨時表結構 (不需索引)

CREATE TABLE tmp_orders SELECT * FROM orders WHERE 1=2;

3. 跨庫/跨服務器遷移結構

# 導出結構 (含觸發器、視圖、事件)
mysqldump -d -u root -p --triggers --routines --events db_name table_name > structure.sql

# 導入目標庫
mysql -u root -p target_db < structure.sql

4. 同結構表數據同步

INSERT INTO target_tbl SELECT * FROM source_tbl;

5. 異結構表數據映射同步

INSERT INTO target_tbl (col_a, col_b, col_c)
SELECT src_x, src_y, src_z FROM source_tbl;

關鍵差異提醒

  • AUTO_INCREMENT:LIKE 保留計數器,SELECT 重置為 1
  • DEFAULT 值:LIKE 保留,SELECT 丟失
  • 字符集/排序規則:LIKE 完整繼承
  • 外鍵:LIKE 保留 (但目標表需滿足引用完整性)

版本兼容性

  • MySQL 4.0.25 不支援 LIKE,必須用 WHERE 1=2
  • 5.0+ 全功能支援
  • 8.0 CREATE TABLE ... SELECT 若來源有隱藏列/函數索引可能報錯,建議顯式列名
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved