oracle創建表副本

CRETAE TABLE提供的AS SELECT語句,允許從一個現有的表中創建一個新的表,創建的表可以包含原表的所有架構、字段屬性、約束和數據記錄;也可以僅架構完全相同,而不包含數據,其使用語法如下所示。

  1. CREATE TABLE <newtable> AS SELECT {* | column(s)} FROM <oldtable> [WHERE <condition>]; 
例如要創建scott方案下的emp表的副本幷包含所有的數據,則可以使用如下的語句:
  1. CREATE TABLE emp_copy AS SELECT * from scott.emp 
可以使用下面的語法僅創建一個架構而不包含任何表數據:
  1. CREATE TABLE emp_copy AS SELECT * from scott.emp WHERE 1=2
上述代碼中,複製的新表將與原來的表列具有完全相同的定義,但是可以通過改變查詢SELECT語句,例如使用函數進行類型的轉換等來創建不完全相同的類型,如以下代碼所示。
  1. CREATE TABLE emp_copy_others AS SELECT empno,ename,TO_CHAR(hiredate,'yyyy-  
  2. MM-dd') AS hiredate FROM scott.emp; 

使用CREATE TABLE..SELECT AS方式有如下幾個限制需要注意。

不能夠複製約束條件與列的默認值,這需要手工重新建立。

不能夠爲新表指定表空間,默認情況下采用的是當前用戶的默認表空間。

一些大對象數據類型(比如Blob類型)或者是Long數據類型的數據,如果包含這種類型的查詢是不能創建成功的。

發佈了24 篇原創文章 · 獲贊 22 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章