CREATE TABLE new_table_name AS
(SELECT * FROM source_table) DEFINITION ONLY;
適用於:快速複製表結構用於測試、臨時表建立、DDL 模板生成。不複製索引、約束、觸發器、授權。
CREATE TABLE mqt_table AS
(SELECT col1, SUM(col2) AS total FROM fact_table GROUP BY col1)
DATA INITIALLY DEFERRED REFRESH DEFERRED;
REFRESH TABLE mqt_table; -- 首次填充數據
DATA INITIALLY DEFERRED:創建時不執行查詢,避免長事務阻塞。REFRESH DEFERRED:手動/排程刷新,適合數據倉庫彙總表、報表緩存。Q(QUERY),但可像普通表一樣被查詢、建立索引、授權。CURRENT REFRESH AGE = ANY)。CREATE TABLE new_table LIKE source_table;
複製列定義、主鍵、唯一約束、檢查約束、默認值、NOT NULL。不複製:外鍵、觸發器、索引(除主鍵/唯一索引)、權限、統計信息。
| 語法 | 複製內容 | 典型場景 | 備註 |
|---|---|---|---|
| AS (SELECT...) DEFINITION ONLY | 列定義 | 快速建測試表、DDL 模板 | 無索引/約束 |
| AS (SELECT...) DATA INITIALLY DEFERRED REFRESH DEFERRED | 列定義 + 查詢定義 | 數據倉庫彙總、報表緩存 | 需手動 REFRESH,優化器可自動路由 |
| LIKE | 列定義 + 主鍵/唯一/檢查/默認 | 分區表模板、歷史表歸檔 | 最接近原表結構,無數據 |
REFRESH TABLE ... INCREMENTAL)需定義暫存表與暫存表觸發器,適合高頻更新場景。CREATE TABLE schema2.tbl LIKE schema1.tbl。