db2 中通過查詢結果來create table 的3種方式
Q:想通過DB2把查詢出來的結果定義為別的表,因為db2沒有類似(或者說對db2還不熟悉)oracle的create table as select來定義表的方式,所以比較麻煩!
今天抽時間總結了一下DB2定義表的3種方式:
首先創建一個例子表,再插入幾條語句。
create table xxx(col1 varchar(10));
insert into xxx values ('1');
commit;
create table YYY(col1 varchar(10),col2 varchar(20));
insert into YYY values ('1','ZXT');
commit;
describe select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2;
一:按照常規的形式定義
首先describe sql,得到DDL,可以如下進行(describe select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2;)
然后根據DDL來創建table,最后把數據insert 過去。
這是一個比較笨的方法,沒什么好說的!今天總結了其他2中方法,現在分享給大家。
二:匯總表方式
需要3個步驟:
1.創建匯總表
create table MM as
(
select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2
)data initially deferred
refresh deferred;
2.刷新數據
refresh table MM;
3.把匯總表改成一般的表
alter table MM drop materialized query;
這個方法比較常用,好使沒啥好說的,而且可以一次性就把數據刷新過去!
三:只定義表結構的形式
需要2個步驟:
1.創建表---只定義表結構
create table MM as
(
select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2
)definition only;
注:此步驟只定義了表結構,類似於oracle 的create XX as 語句
2.插數據過來
insert into MM select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2;
commit;
原文:http://space.itpub.net/694276/viewspace-193980