db2中create table as的建表方式

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;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值