Maison >base de données >Oracle >Quelle est l'utilité de fusionner dans Oracle
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é.
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.
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');
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 :
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);
Les données ont été ajoutées avec succès !
Alors, 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);
Les données sont mises à jour avec succès La !
Exigence 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.
create table tes( ID NUMBER not null primary key, CODE VARCHAR2(255), MEMO VARCHAR2(255));commit;
INSERT INTO ROOT.TEST_TWO (ID, CODE, MEMO) VALUES (5, 'mrhu', '隔壁老王的IP');
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);
Tutoriel vidéo 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!