Maison >base de données >Oracle >A quoi sert la fusion dans Oracle

A quoi sert la fusion dans Oracle

WBOY
WBOYoriginal
2022-03-07 16:15:0417928parcourir

Dans Oracle, la commande de fusion peut effectuer des opérations d'insertion et de mise à jour sur une table en même temps dans une seule instruction SQL. L'instruction de fusion est souvent utilisée pour effectuer des opérations de fusion sur deux tables spécifiées. La syntaxe est "MEGER INTO table cible de fusion. UTILISANT la condition de fusion de la table source ON".

A quoi sert la fusion dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

À quoi sert la fusion dans Oracle

Commande merge

Grâce à cette fusion, vous pouvez effectuer des insertions et des mises à jour sur une table en même temps dans une seule instruction SQL

En utilisant l'instruction meger, vous pouvez effectuer des opérations de fusion sur deux tables spécifiées, la syntaxe est la suivante :

MEGER INTO table1_name
USING table2_name ON join_condition
WHEN MATCHEO THEN UPDATE SET...
WHEN NOT MATCHED THEN INSERT ...VALUES...

La description de la syntaxe est la suivante :

table1_name représente la table cible qui doit être fusionnée.

table2_name indique la table source qui doit être fusionnée.

join_condition représente la condition de fusion.

quand matcheo puis mise à jour signifie que si les conditions de fusion sont remplies, l'opération de mise à jour sera effectuée.

lorsqu'il n'y a pas de correspondance, insérer signifie que si les conditions ne sont pas remplies, l'opération d'insertion sera effectuée.

mettre à jour et insérer

Si vous souhaitez simplement fusionner les données qualifiées de la table source dans la table cible, vous ne pouvez utiliser la clause de mise à jour que si vous souhaitez fusionner les données de la table source qui ne répondent pas à la fusion. conditions dans la table cible, vous ne pouvez utiliser que la clause d'insertion.

Dans la clause update et la clause insert, vous pouvez utiliser la clause Where pour spécifier les conditions d'insertion mise à jour. À l'heure actuelle, pour l'opération de fusion, deux niveaux de conditions de filtrage sont fournis. Le premier niveau est la condition de fusion, spécifiée par la clause on dans la clause meger, et le deuxième niveau est la condition Where spécifiée dans la clause update ou insert. . Cela rend l’opération de fusion plus flexible et sophistiquée.

Ici, nous créons deux tables, l'une est la table des personnes et l'autre est la table des nouvelles personnes. La structure des deux tables est la même

SQL> create table person(
2  pid number(4),
3  page number(3)
4  );

La table a été créée.

--Insérer trois lignes de données

SQL> insert into person values(1,20);

1 ligne a été créée.

SQL> insert into person values(2,21);

1 ligne créée.

SQL> insert into person values(3,22);

1 ligne créée.

SQL> create table newperson(
2  pid number(4),
3  page number(3)
4  );

Table créée.

--插入三行数据
SQL> insert into newperson values(1,100);

1 ligne créée.

SQL> insert into newperson values(4,100);

1 ligne créée.

SQL> insert into newperson values(5,100);

1 ligne créée.

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 lignes fusionnées.

--L'instruction SQL ci-dessus est lorsque le pid en personne est égal au pid en nouvelle personne, définissez la page correspondante en personne sur l'âge en nouvelle personne. Lorsqu'elle ne correspond pas, insérez des données non qualifiées dans la personne. Les résultats d'exécution sont les suivants :

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

Tutoriel recommandé : "Oracle Video Tutorial"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn