ホームページ >データベース >Oracle >Oracleでのマージの使用法は何ですか

Oracleでのマージの使用法は何ですか

WBOY
WBOYオリジナル
2022-03-07 16:15:0417929ブラウズ

Oracle では、マージ コマンドを使用すると、1 つの SQL ステートメントでテーブルに対する挿入操作と更新操作を同時に実行できます。マージ ステートメントは、指定した 2 つのテーブルに対してマージ操作を実行するためによく使用されます。構文は「MEGER」です。 INTO マージ。「ターゲット テーブル USING マージ ソース テーブル ON 条件」。

Oracleでのマージの使用法は何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle でのマージの使用方法

マージ コマンド

このマージを使用すると、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。