1. ホーム
  2. DB2

db2のようにテーブルを作成する方法

2022-03-02 10:27:02

<スパン DB2 には、Oracle の create table as select のようなテーブルを定義する方法がないので、SELECT クエリの結果を DB2 で別のテーブルとして定義するのは、それ以上の手間がかかります!

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;





I:通常のフォームで定義する
最初にSQLを記述し、DDLを取得すると、次のように進めることができます(describe select t1.col1,t2 from t1,t2where t1.col1=t2.col2; )。
そして、DDLに基づきテーブルを作成し、最後にデータを挿入します。


II:サマリーテーブル方式
  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;

 この方法はより一般的に使用され、うまく機能し、一度にデータをリフレッシュします

III: テーブル構造のフォームのみを定義する
   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つの方法をまとめてみましたので、ご紹介します。
もう一つは、カーソルを介して別のテーブルにロードする方法です(カーソルでは、データは接地する必要がありません)。

DECLARE mycursor CURSOR FOR SELECT col1, col2 FROM t2;
LOAD FROM mycursor OF CURSOR INSERT INTO t3;