日常開發運維中,頻繁需要基於現有表創建新表。MySQL 提供極簡語法實現結構與數據的靈活複製。
CREATE TABLE new_table SELECT * FROM old_table WHERE 1=2;
利用 WHERE 1=2 永假條件,MySQL 僅解析 SELECT 列定義創建表結構,不執行數據複製。
CREATE TABLE new_table SELECT * FROM old_table;
完整複製列定義與數據行,新表即刻可用。
上述方法不複製主鍵、索引、外鍵、觸發器、分區等對象。完整克隆需兩步:
CREATE TABLE new_table LIKE old_table; -- 複製完整結構定義 INSERT INTO new_table SELECT * FROM old_table; -- 複製數據
pt-online-schema-change 類工具。CREATE TABLE ... SELECT 不保留 AUTO_INCREMENT 屬性,需手動 ALTER TABLE 修正。DEFAULT CHARSET。掌握這三種複製模式,覆蓋 90% 的表複製場景,提升運維效率。