OracleのINSERT SELECT(SELECTした結果をINSERTするパターン)

OracleのINSERT ~ SELECTのパターン

OracleでINSERTするには通常1レコードずつINSERTしますが、SELECTした結果をまとめてINSERTすることもできます。

ここでは「INSERT ~ SELECT」のいくつかのパターンを紹介します。

例1. 列が同じテーブルのINSERT SELECTパターン

サンプルテーブル

  • table1{a_no, a_name, a_address, a_flag}
  • table2{a_no, a_name, a_address, a_flag}

列の定義が同じテーブル同士(table1,table2)はこのようにINSERTで列を指定する必要がありません。最もシンプルな「INSERT SELECT」です。

特徴としてはINSERTなのに「VALUES」がないところですね。

例2. 列を指定するINSERT SELECTパターン

サンプルテーブル

  • s_table{s_no, s_name, memo}
  • e_table{e_no, e_name, memo, e_address}

列の構成が異なるテーブルをINSERT SELECTする場合は、列を指定する必要があります。

ここでは、「e_table」のSELECT結果を列を指定して「s_table」へINSERTしました。


例3. 指定データ&列を指定するINSERT SELECTパターン

ここでは「s_no」「s_name」列はSELECTの結果をINSERTしていますが、「memo」は直接、文字列「’退職’」を指定しています。

テーブルのSELECT結果と指定データを混在してINSERTするパターンですね。

別テーブルのSELECT結果をINSERTするパターンとして3つとりあげました。

以上、OracleのINSERT SELECT(SELECTしてINSERTする)のパターンでした。