db 2におけるcreate table asの構築方式

1850 ワード

DB 2にはoracleのようなcreate table as selectでテーブルを定義する方法がないので、DB 2でSELECTで検索した結果を別のテーブルと定義するのは面倒!
DB 2定義テーブルの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 t 1.co 1,t 2.col 2 from t 1,t 2 where t 1.co 1=t 2.col 2;
そして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;
この方法はよく使われています.何も言うことはありません.そして、一度にデータをリフレッシュすることができます.
3:テーブル構造の形式のみを定義するには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つの方法をまとめて、今皆さんに共有します.
もう1つは、カーソルloadを介して別のテーブルに移動することです(カーソルを使用すると、データが着地する必要はありません)
DECLARE mycursor CURSOR FOR SELECT col1, col2  FROM t2;
LOAD FROM mycursor OF CURSOR INSERT INTO t3;