Oracle では、マージ コマンドを使用すると、1 つの SQL ステートメントでテーブルに対する挿入操作と更新操作を同時に実行できます。マージ ステートメントは、指定した 2 つのテーブルに対してマージ操作を実行するためによく使用されます。構文は「MEGER」です。 INTO マージ。「ターゲット テーブル USING マージ ソース テーブル ON 条件」。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
マージ コマンド
このマージを使用すると、1 つの SQL ステートメントでテーブルの挿入と更新を同時に実行できます
meger ステートメントを使用すると、指定した 2 つのテーブルに対してマージ操作を実行できます。構文は次のとおりです:
MEGER INTO table1_name USING table2_name ON join_condition WHEN MATCHEO THEN UPDATE SET... WHEN NOT MATCHED THEN INSERT ...VALUES...
構文の説明は次のとおりです:
table1_name は、マージする必要があるターゲットテーブル。
table2_name は、マージする必要があるソース テーブルを示します。
join_condition はマージ条件を表します。
when matcheo then update は、マージの条件が満たされた場合に更新操作が実行されることを意味します。
when not matched then insert は、条件が満たされない場合に挿入操作が実行されることを意味します。
update と insert
ソース テーブルの条件を満たすデータをターゲット テーブルにマージするだけの場合は、update 句のみを使用できます。マージ条件を満たさないソース テーブルのデータ。データをターゲット テーブルにマージするには、insert 句のみを使用できます。
update 句と insert 句の両方で、where 句を使用して更新された挿入の条件を指定できます。このとき、マージ操作には、megar句のon句で指定するマージ条件と、update句またはinsert句で指定するwhere条件の2段階のフィルタリング条件が用意されています。 。これにより、マージ操作がより柔軟かつ洗練されたものになります。
ここでは 2 つのテーブルを作成します。1 つは person テーブル、もう 1 つは newpersono テーブルです。2 つのテーブルの構造は同じです。
SQL> create table person( 2 pid number(4), 3 page number(3) 4 );
テーブルが作成されました。
--3 行のデータを挿入
SQL> insert into person values(1,20);
1 行が作成されました。
SQL> insert into person values(2,21);
1 行が作成されました。
SQL> insert into person values(3,22);
1 行が作成されました。
SQL> create table newperson( 2 pid number(4), 3 page number(3) 4 );
テーブルが作成されました。
--插入三行数据 SQL> insert into newperson values(1,100);
1 行が作成されました。
SQL> insert into newperson values(4,100);
1 行が作成されました。
SQL> insert into newperson values(5,100);
1 行が作成されました。
SQL> select * from person; PID PAGE ---------- ---------- 1 20 2 21 3 22 SQL> select * from newperson; PID PAGE ---------- ---------- 1 100 4 100 5 100 SQL> merge into person p1 2 using newperson p2 3 on (p1.pid=p2.pid) 4 when matched then 5 update set p1.page=p2.page 6 when not matched then 7 insert (pid,page) values(p2.pid,p2.page);
3 行が結合されました。
--上記のSQL文は、personのpidとnewpersonのpidが等しい場合、対応するページのpersonをnewpersonの年齢に設定し、一致しない場合は、personに不修飾条件を挿入します。 。 データ。実行結果は次のとおりです。
SQL> select * from person; PID PAGE ---------- ---------- 1 100 2 21 3 22 5 100 4 100 --newperson表中的数据不会改变: SQL> select * from newperson; PID PAGE ---------- ---------- 1 100 4 100 5 100
推奨チュートリアル: "Oracle Video Tutorial"
以上がOracleでのマージの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。