In Oracle wird „Zusammenführen in“ zum Aktualisieren von Daten in einer Tabelle verwendet. Wenn sich die Daten bereits in der eingefügten Tabelle befinden, werden die Daten aktualisiert Daten werden aktualisiert. Neue Daten werden zur eingefügten Tabelle hinzugefügt.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.
Oracle9g hat den MERGE-Befehl eingeführt. Sie können Einfügungen und Aktualisierungsvorgänge für eine Tabelle gleichzeitig in einer SQL-Anweisung ausführen zum Aktualisieren oder Aktualisieren. In Oracle 10g gibt es die folgenden Verbesserungen:
1 Die UPDATE- und INSERT-Klauseln können mit einer WHERE-Klausel hinzugefügt werden
3. Das konstante Filterprädikat wird in der ON-Bedingung verwendet, um alle Zeilen in die Zieltabelle einzufügen. Es ist nicht erforderlich, die Quelltabelle und die Zieltabelle zu verbinden. 4. Der UPDATE-Klausel kann eine DELETE-Klausel zum Entfernen folgen 5. Quelle Die Tabelle ist die Tabelle, die auf das Schlüsselwort using folgt, und die Zieltabelle ist die Tabelle, in die zusammengeführt wird. 6. Alle Aktualisierungen, Einfügungen und Löschungen werden in der Zieltabelle durchgeführt. Da „Merge into“ die Tabelle für den Betrieb bereits formuliert hat, muss beim Aktualisieren, Einfügen und Löschen der Tabellenname nicht angezeigt werden7 Kurz gesagt, die Funktion von „Merge into“ besteht darin, das Problem der Verwendung von Tabelle B und neuer Tabelle A zu lösen Wenn in Tabelle A keine Daten vorhanden sind, fügen Sie die Daten aus Tabelle B in Tabelle A ein oder fügen Sie Daten in eine Tabelle ein. Wenn die Tabelle bereits Daten enthält, aktualisieren Sie sie, andernfalls fügen Sie neue Daten hinzu.Syntax:
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 ! ]
Als nächstes testen wir es direkt:
Anforderung 1: Fügen Sie ein Datenelement in eine Tabelle ein. Wenn die Daten bereits in der Tabelle vorhanden sind, aktualisieren Sie sie.
Erstellen Sie zunächst eine Tabelle TEST_ONE
create table TEST_ONE( ID NUMBER not null primary key, NAME VARCHAR2(255), IP VARCHAR2(255), MEMO VARCHAR2(255))commit;
Fügen Sie einfach ein paar Daten als Testdaten hinzu
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');
Aber wir hoffen, dass wir zuerst die ID verwenden können. Machen Sie ein Urteil, es gibt keine neuen Daten, aber die Daten werden aktualisiert. Wie kann dies erreicht werden?
Dann ist der Befehl zum Zusammenführen hier, geben Sie einfach den Code ein:
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);
Führen Sie ihn wie folgt aus:
Schauen wir uns noch einmal die Daten in der Tabelle an:
Die Daten wurden erfolgreich aktualisiert La!
Anforderung 2: Fügen Sie die Daten in Tabelle A zu Tabelle B hinzu. Es ist erforderlich, anhand des Primärschlüssels zu beurteilen, ob die Daten enthalten sind. Andernfalls fügen Sie
Wir erstellen eine weitere Tabelle TEST_TWO als Tabelle B und TEST_ONE als hinzu Tabelle A.
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);
create table tes( ID NUMBER not null primary key, CODE VARCHAR2(255), MEMO VARCHAR2(255));commit;
Importieren wir die Daten in TEST_ONE in unsere neu erstellte Tabelle. Durch die Analyse haben wir festgestellt, dass es in der Tabelle TEST_TWO ein Datenelement mit der ID gibt 5. In TEST_ONE gibt es auch ein Datenelement mit der ID 5. Der erwartete Ausführungseffekt besteht darin, dass der Memofeldwert der Daten mit TEST_TWOID 5 auf die „IP dieser schönen Frau“ in TEST_ONE aktualisiert wird. und andere Werte werden hinzugefügt.
Lassen Sie uns Code schreiben, um ihn zu überprüfen:
INSERT INTO ROOT.TEST_TWO (ID, CODE, MEMO) VALUES (5, 'mrhu', '隔壁老王的IP');
Oracle Video Tutorial
“Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von „merge into' in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!