四大核心命令對比
| 命令 | 複製內容 | 索引/約束 | 觸發器/分區 | 適用版本 |
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 若來源有隱藏列/函數索引可能報錯,建議顯式列名