| 特性 | CREATE TABLE ... AS SELECT | CREATE TABLE ... LIKE |
|---|---|---|
| 表結構 | ✅ 復制 | ✅ 復制 |
| 索引/主鍵/外鍵/約束 | ❌ 不復制 | ✅ 完整復制 |
| 數據行 | ✅ 可選(帶 WHERE/LIMIT) | ❌ 不復制 |
| 自增計數器 | ❌ 重置為 1 | ✅ 保留原值 |
| 分區定義 | ❌ 不復制 | ✅ 復制 |
-- 完整復制結構與數據
CREATE TABLE t2 AS SELECT * FROM t1;
-- 僅復制結構(利用永假條件)
CREATE TABLE t2 AS SELECT * FROM t1 WHERE 1=2;
-- 或
CREATE TABLE t2 AS SELECT * FROM t1 LIMIT 0;
適用:建測試表、導出子集、ETL 臨時表、跨庫遷移數據(配合 INSERT ... SELECT)。
CREATE TABLE t2 LIKE t1;
適用:建生產備份表、分區表克隆、保留自增值/外鍵/分區方案的空表初始化。
LIKE 保留原引擎;AS SELECT 默認使用會話 default_storage_engine(可顯式指定 ENGINE=InnoDB)。AS SELECT(無索引),無 LIKE 語法。ALTER TABLE ... ADD INDEX 補索引)生產環境「建表如建庫」,優先用
LIKE保證約束完整,再按需導數據。AS SELECT適合臨時分析、開發自建表,切勿直接用於核心業務表初始化。