2009/12/02

Oracle PL/SQL 中, 用 Select 方式建立 Table (備份資料)

用 Select 方式建立 Table, 有以下幾種型式 :

建立某 Table 的部分架構且要複製資料
 語法
create table <table_name> as
select ...
from <source_table>
where ...;

建立某 Table 的部分架構但不複製資料
 語法
create table <table_name> as
select ...
from <source_table>
where 1 = 0;

建立某 Table 的整個架構 (備份架構)
 語法
create table <table_name> as
select *
from <source_table>
where ...;

建立某 Table 的整個架構 (備份架構), 且外加其他欄位
 語法
create table <table_name> as
select <table_alias>.*
, ' ' col_name1 -- 若要字串型態, 則用 ' ' 表示
, 0 col_name2 -- 若要數字型態, 則用 0 表示
, to_date(null) col_name3 -- 若要日期型態, 則用 to_date(null) 表示
, ...
from <source_table> <table_alias>
where ...;

-- 用 ' ' 建立的資料型態為 char(1),
-- 若是要其他的字串型態, 請用 alter table ... modify 來更改


 注意事項
1. 用此方式建立 Table時, "若有 Compute欄位時, 則此 Compute欄位須有別名", 否則會有錯誤.
2. 用此方式建立 Table時, "不能有 LONG 資料型態的欄位", 否則會有錯誤.