天地不仁,以万物为刍狗!

[原创]db2 中通过查询结果来create table 的3种方式

上一篇 / 下一篇  2008-02-25 17:09:52 / 个人分类:db2

db2 中通过查询结果来create table 的3种方式

Q:想通过DB2把查询出来的结果定义为别的表,因为db2没有类似(或者说对db2还不熟悉)oracle的create table as select来定义表的方式,所以比较麻烦!

今天抽时间总结了一下DB2定义表的3种方式:

首先创建一个例子表,再插入几条语句。ITPUB个人空间%w:I(rz/iV
create table xxx(col1 varchar(10));

insert into xxx values ('1');ITPUB个人空间qC$lCk
commit;

create table YYY(col1 varchar(10),col2 varchar(20));

insert into YYY values ('1','ZXT');ITPUB个人空间O)|vU@mk%A
commit;

describe select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2;
8vr$jqoKUAf0一:按照常规的形式定义
t8~`f$l0G0首先describe sql,得到DDL,可以如下进行(describe select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2;)ITPUB个人空间!P#nS1D!IZ9?8v+fXT
然后根据DDL来创建table,最后把数据insert 过去。

这是一个比较笨的方法,没什么好说的!今天总结了其他2中方法,现在分享给大家。

二:汇总表方式ITPUB个人空间uh T.wn8F8Za.g[9I
  需要3个步骤:ITPUB个人空间'o,`Wq&O[
    1.创建汇总表
)P7dqx7N E,w G(]6M0 create table MM asITPUB个人空间`"f$T dUv#K8E4S
 (ITPUB个人空间/n;F%ym:x L {8F/Q
 select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2ITPUB个人空间+\ZU\?m*@9?f
 )data initially deferred
-T B.NQ#[9@(l z0 refresh deferred;ITPUB个人空间kTA8h2P0Sfr
 2.刷新数据
i~h(Yu7j7^0 refresh table MM;
#?p2wpg |,R0 3.把汇总表改成一般的表ITPUB个人空间l-_+pJOdD_)E{8?
 alter table MM drop materialized query;
c"}-l fQO6l3G0 这个方法比较常用,好使没啥好说的,而且可以一次性就把数据刷新过去!
NW!Q3l+z3f\0 
x2L bO L[*G:N(D0三:只定义表结构的形式
7[QW Cm7Q U&t9YW&~0   需要2个步骤:
mqa#N#XP0  ITPUB个人空间4e$wRb{@
   1.创建表---只定义表结构ITPUB个人空间 Aoxe!H8m
   create table MM asITPUB个人空间U3c$_ fB-{%o1KonY
   (ITPUB个人空间EI%O9x#T
   select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2ITPUB个人空间i-o8A~;j c'Q"m
   )definition only;
9p|!L'[;D ?J0   注:此步骤只定义了表结构,类似于oracle 的create XX as 语句
e|Gi&q"m\7O0  ITPUB个人空间uC@} i9h;[*oB
   2.插数据过来
/wTt0``$|(_:~o0   insert into MM select xxx.col1,yyy.col2 from xxx,YYY where xxx.col1=yyy.col2;ITPUB个人空间t2@v Du%T
   commit;
!_ A)^1r$i0  ITPUB个人空间:HU[u"jn*{$Sx
呵呵,个人觉得2和3比较好用!
d4QA4m4U^3qb0                                
l*|)` _%u(]KgO0     --2008-02-25

                                 Z.X.T(myfriend2010)
-DQ,E@fC6@E h0  

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-09  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 8308
  • 日志数: 268
  • 图片数: 1
  • 文件数: 2
  • 建立时间: 2007-12-01
  • 更新时间: 2008-09-05

RSS订阅

Open Toolbar