登録・更新・削除

[Oracle] 他のテーブルからデータを登録するSQL(INSERT~SELECT)

他のテーブルデータから登録

INSERTでは、VALUES句をSELECT文に置き換え、他のテーブルのデータを登録することが可能です。

INSERT INTO テーブル名 (列1, 列2, 列3 ・・・ )
SELECT 列1, 列2, 列3 ・・・ FROM 元テーブル名;

登録先と登録元のテーブル構造が同じであるならば、列名の省略が可能です。

それではサンプルを見てみましょう。
以下のようなitemテーブル(上)とstockテーブル(下)があります。

id name price comment
1 りんご 100 ジューシー
2 レモン 150 null

z_id z_name z_price storing_days z_comment
10 すいか 500 30 null
11 メロン 800 25 null


指定した列に対しstockテーブルからデータを登録するためのSQLです。

上記を実行した結果がこちらです。

id name price comment
1 りんご 100 ジューシー
2 レモン 150 null
10 すいか 500 在庫品
11 メロン 800 在庫品


SELECTで指定したstockテーブルのデータがitemテーブルに登録されました。
commentにはSELECT句で’在庫品’という文字列を直接指定しています。
また、WHERE句を指定することで登録元のテーブルの特定のレコードのみを、登録先のテーブルへ登録することも可能です。
 
 
以上が、他のテーブルのデータを登録する「INSERT ~ SELECT」の使い方です。
ぜひ参考にしてみてください。