Db2でテストやデモなどで既存テーブルをデータごとコピーして同じDBの違うテーブル名で作成したくなったことがありました。
SQLを調べたのでメモっておきます。使いたい方がいるかどうかはわかりませんが。
↓こんな感じです:
CREATE TABLE SCHEMA.NEW_TB AS (
SELECT *
FROM SCHEMA.OLD_TB
) WITH DATA
-
SCHEMA(スキーマ)は同じでも違っても構いません。
-
ちなみに「コピー」じゃなくなりますが、一部列でも、はたまたテーブル2つをJOINしたり、 WHERE文がついていても、SELECT文が正しければその結果のテーブルが作成できます。
↓WITH DATA
の部分をWITH NO DATA
とすればテーブル定義は同じで空テーブルが作成できます。
CREATE TABLE SCHEMA.NEW_TB AS (
SELECT *
FROM SCHEMA.OLD_TB
) WITH NO DATA
参考: Db2ドキュメント CREATE TABLE ステートメント
以上です。