首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 資料表複製實戰:五種常見複製場景與 SQL 語法詳解

     編輯:Oracle 資料庫基礎

前言

在 Oracle 開發與維護中,依據現有資料表結構或資料建立新表是高頻操作。本文系統整理五種典型複製場景,提供標準 SQL 語法與實務注意事項,助您精準選擇最適方案。

場景一:僅複製表結構 (不含資料)

CREATE TABLE b AS SELECT * FROM a WHERE 1 <> 1;

利用永假條件 1 <> 1 使查詢不回傳任何列,僅保留欄位定義、資料型態與 NOT NULL 約束。注意:索引、主鍵、外鍵、檢查約束等不會被複製,需手動補建。

場景二:複製表結構與所有資料

CREATE TABLE b AS SELECT * FROM a;

最常用的一鍵複製語法,新表將擁有相同欄位與完整資料集。同樣不複製索引與約束。

場景三:僅複製指定欄位結構 (不含資料)

CREATE TABLE b AS SELECT row_id, name, age FROM a WHERE 1 <> 1;

前提是 row_id, name, age 均為表 a 的實際欄位。適用於依據業務需求抽取部分欄位建立新表結構。

場景四:複製指定欄位結構與對應資料

CREATE TABLE b AS SELECT row_id, name, age FROM a;

結合場景二與三,精準控制新表的欄位集合與資料內容。

場景五:將查詢結果插入已存在的目標表

INSERT INTO t2 (column1, column2, ...)
SELECT column1, column2, ... FROM t1;

適用於目標表 t2 已存在結構,需從 t1 同步或遷移資料的情境。欄位順序與型態必須一一對應。

關鍵提醒:索引與約束須手動重建

所有 CREATE TABLE ... AS SELECT (CTAS) 語法均不會複製:

  • 索引 (Index)
  • 主鍵
  • 外鍵
  • 唯一約束
  • 檢查約束
  • 觸發器

複製完成後,請依原表定義使用 ALTER TABLE 或 CREATE INDEX 補齊相關物件,確保資料完整性與查詢效能。

進階技巧:搭配 WHERE 子句實現條件式複製

在場景二與四中,可直接加入 WHERE 條件過濾資料,例如:

CREATE TABLE b AS SELECT * FROM a WHERE create_date >= DATE '2024-01-01';

這在歷史資料歸檔、分區表建立等場景極為實用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved