Maison >base de données >Oracle >Quelle est l'utilité de fusionner dans Oracle

Quelle est l'utilité de fusionner dans Oracle

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBoriginal
2022-03-02 13:47:2422858parcourir

Dans Oracle, "fusionner dans" est utilisé pour mettre à jour les données d'une table. Vous pouvez insérer des données d'une table dans une autre table. Si les données sont déjà dans la table insérée, les données seront mises à jour. données, les données seront mises à jour. De nouvelles données seront ajoutées au tableau inséré.

Quelle est l'utilité de fusionner 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 ?

Oracle9g a introduit la commande MERGE Vous pouvez effectuer des opérations d'insertion et de mise à jour sur une table en même temps dans une seule instruction SQL. pour mettre à jour ou mettre à jour. Insérer dans une ou plusieurs tables. Dans Oracle 10g, MERGE présente les améliorations suivantes :

1. La clause UPDATE ou INSERT est facultative

2 Les clauses UPDATE et INSERT peuvent être ajoutées avec une clause WHERE

.

3. Le prédicat de filtre constant est utilisé dans la condition ON pour insérer toutes les lignes dans la table cible. Il n'est pas nécessaire de connecter la table source et la table cible 4. La clause UPDATE peut être suivie d'une clause DELETE pour la supprimer. certaines lignes inutiles. 5. Source La table est la table qui suit le mot-clé using et la table cible est la table dans laquelle sera fusionnée. 6. Toutes les mises à jour, insertions et suppressions lors de la fusion sont effectuées sur la table cible. Puisque merge into a déjà formulé la table pour l'opération, la mise à jour, l'insertion et la suppression n'ont pas besoin d'afficher le nom de la table

7. En bref, la fonction de merge into est de résoudre le problème de l'utilisation de la table B et de la nouvelle table A. data S'il n'y a pas de données dans le tableau A, insérez les données du tableau B dans le tableau A ou insérez les données dans un tableau si le tableau contient déjà les données, mettez-les à jour, sinon ajoutez de nouvelles données.

Syntaxe :

MERGE INTO [your table-name] [rename your table here]  
  USING ( [write your query here] )[rename your query-sql and using just like a table]  
  ON ([conditional expression here] AND [...]...)  
  WHEN MATHED THEN [here you can execute some update sql or something else ]  
  WHEN NOT MATHED THEN [execute something else here ! ]
Ensuite, testons-la directement :

Exigence 1 : Insérez une donnée dans une table, mettez-la à jour. Sinon, ajoutez-la


Créez d'abord une table TEST_ONE.

create table TEST_ONE(
  ID   NUMBER not null
    primary key,
  NAME VARCHAR2(255),
  IP   VARCHAR2(255),
  MEMO VARCHAR2(255))commit;

Ajoutez simplement quelques données comme données de test

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (1, '2', '3', '周文军');
INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (2, '66', '366', '2656');
INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (3, '5656', '626', '2626');
INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (4, '5656', '2626', '626');

D'accord, notre tableau de données a été construit, comme indiqué ci-dessous :

Si nous devons ajouter une nouvelle donnée, nous le faisons généralement comme ceci

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (5, 'mrhu', '127.0.0.1.0', '王先生的IP');
Mais nous espérons d'abord utiliser l'ID. Portez un jugement, il n'y a pas de nouvelles données, mais les données sont mises à jour. Comment y parvenir ?


Ensuite, la commande merge into est là, tapez simplement le code : Quelle est lutilité de fusionner dans Oracle

merge into TEST_ONE mtb using (select '5' as id, 'mrhu' as name,'127.0.0.1.0' as ip,'王先生的IP' as memo from dual)mmb on (mtb.id = mmb.id)when matched THENupdate set mtb.name = mmb.name,mtb.ip = mmb.ip,mtb.memo=mmb.memo
when not matched theninsert (mtb.id, mtb.name,mtb.ip,mtb.memo) VALUES(mmb.id,mmb.name,mmb.ip,mmb.memo);

Exécutez comme suit :

Regardons à nouveau les données dans le tableau :

Les données ont été ajoutées avec succès !
Quelle est lutilité de fusionner dans OracleAlors, comment testons-nous les mises à jour ? C'est très simple. Nous changeons memo='M. Wang's IP' en memo='This beautiful girl's IP' pour tester

merge into TEST_ONE mtb using (select '5' as id, 'mrhu' as name,'127.0.0.1.0' as ip,'本大美女的IP' as memo from dual)mmb on (mtb.id = mmb.id)when matched THENupdate set mtb.name = mmb.name,mtb.ip = mmb.ip,mtb.memo=mmb.memo
when not matched theninsert (mtb.id, mtb.name,mtb.ip,mtb.memo) VALUES(mmb.id,mmb.name,mmb.ip,mmb.memo);

Le fonctionnement est le suivant :Quelle est lutilité de fusionner dans Oracle
Regardons à nouveau les données dans le tableau :

Les données sont mises à jour avec succès La !
Quelle est lutilité de fusionner dans OracleExigence 2 : Ajoutez les données du tableau A au tableau B. Il est nécessaire de juger par la clé primaire, si les données sont incluses, mettez-les à jour. Sinon, ajoutez

Nous créons une autre table TEST_TWO comme table B et TEST_ONE comme table. table A. Quelle est lutilité de fusionner dans Oracle

create table tes(
  ID   NUMBER not null
    primary key,
  CODE VARCHAR2(255),
  MEMO VARCHAR2(255));commit;

D'accord, la table TEST_TWO est créée, ajoutons d'abord une donnée !
INSERT INTO ROOT.TEST_TWO (ID, CODE, MEMO) VALUES (5, 'mrhu', '隔壁老王的IP');

Regardons à nouveau les données de TEST_TWO :

Importons les données de TEST_ONE dans notre table nouvellement créée. Grâce à l'analyse, nous avons découvert qu'il y avait une donnée dans la table TEST_TWO, avec un ID de. 5, dans TEST_ONE Il y a aussi une donnée avec un ID de 5. L'effet d'exécution attendu est que la valeur du champ mémo des données avec un TEST_TWOID de 5 sera mise à jour avec « l'adresse IP de cette belle femme » dans TEST_ONE, et d'autres valeurs seront ajoutées.

Écrivons du code pour le vérifier :

merge into TEST_TWO mtb using (select id,name,ip,memo from TEST_ONE) mmb on (mtb.id = mmb.id)when matched THENUPDATE set mtb.code = mmb.name,mtb.memo = mmb.memo
when not matched THENinsert (mtb.id,mtb.code,mtb.memo) values (mmb.id,mmb.name,mmb.memo);

Voyons l'effet : Quelle est lutilité de fusionner dans Oracle
Le résultat de l'exécution est cohérent avec le résultat attendu. D'accord, avez-vous appris à utiliser merge into ? Si vous l'aimez, veuillez suivre et soutenir. il!

Tutoriel recommandé : "

Tutoriel vidéo Oracle
"Quelle est lutilité de fusionner dans Oracle

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