db2中create table as的建表方式

来源:互联网 发布:哪个软件免费下载音乐 编辑:程序博客网 时间:2024/06/05 11:05

DB2没有类似oracle的create table as select来定义表的方式,所以DB2中把SELECT查询出来的结果定义为别的表比较麻烦!


DB2定义表的3种方式:

首先创建一个例子表,再插入几条语句。

create table t1(col1 varchar(10));create table t2 (col1 varchar(10),col2 varchar(20));insert into t1 values ('1');insert into t2 values ('1','ZXT');describe select t1.col1,t2.col2 from t1,t2 where t1.col1=t2.col2;

一:按照常规的形式定义
首先describe sql,得到DDL,可以如下进行(describe select t1.col1,t2.col2 from t1,t2where t1.col1=t2.col2;)
然后根据DDL来创建table,最后把数据insert 过去。


二:汇总表方式
  需要3个步骤:
    1.创建汇总表

 create table tt as ( select t1.col1,t2.col2 from t1,t2 where t1.col1=t2.col2 )data initially deferred refresh deferred;

 2.刷新数据

 refresh table tt;

 3.把汇总表改成一般的表

alter table tt drop materialized query;
 这个方法比较常用,好使没啥好说的,而且可以一次性就把数据刷新过去!

三:只定义表结构的形式
   需要2个步骤:
  
   1.创建表---只定义表结构

  create table tt as   (   select t1.col1,t2.col2 from t1,t2 where t1.col1=t2.col2   ) definition only;

   注:此步骤只定义了表结构,类似于oracle 的create XX as 语句
  
   2.插数据过来

insert into tt select t1.col1,t2.col2 from t1,t2 where t1.col1=t2.col2;
这是一个比较笨的方法,没什么好说的!今天总结了其他2中方法,现在分享给大家。


还有一种就是通过游标load进另外一个表中(采用游标,数据不需落地)

DECLARE mycursor CURSOR FOR SELECT col1, col2  FROM t2;LOAD FROM mycursor OF CURSOR INSERT INTO t3;
                                             
0 0
原创粉丝点击