SQL Grundkurs 1: Die Sprache erlernen

MERGE mit MySQL

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Leider ist die MERGE-Anweisung in MySQL 5.5 noch nicht implementiert. Aber durch dieses Video lernen Sie den Workaround kennen, mit dem Sie auch hier zum Ziel kommen.

Transkript

In diesem Video zeige ich Ihnen, wie Sie eine MERGE-Funktionalität unter MySQL abbilden. Unter "Merge" versteht man das Zusammenmischen sozusagen von zwei Datenbeständen zu Abgleichzwecken. D.h. Ziel eines Merge ist es, dass Änderungen, die es in einem Bestand gegenüber einem anderen gibt, in den jeweils anderen eingearbeitet werden. Konkret geht es darum, inhaltliche Änderungen zu übernehmen, Datensätze, die es im zweiten Bestand noch nicht gibt, einzufügen, und Datenbestände, die im zweiten Bestand vorhanden sind, aber im ersten Bestand nicht mehr, wieder herauszulöschen. MySQL hat bis jetzt die MERGE-Anweisung noch nicht implementiert. Natürlich können Sie diese Funktionalität durch drei separate Anweisungen, ein "Insert", "Update" und "Delete", nachbilden. Und wie das geht, zeige ich Ihnen nun. Dazu habe ich folgendes Beispiel vorbereitet: Wir haben ja bereits unsere Tabelle "Artikelgruppen" immer wieder verwendet. Hier finden wir z.Zt. neun Einträge. In der Spalte "Art.Gr." haben wir das Kürzel und in der Spalte "Gr.Text" den jeweiligen Langtext. In der zweiten vorbereiteten Tabelle "Artikelgruppen" unterscheiden sich die Inhalte etwas. Wir haben hier zwei zusätzliche Datensätze, nämlich die Artikelgruppe "BR" für "Blue Ray Discs" und "BU" für "Bücher und Zeitschriften". Außerdem hat die Artikelgruppe "Haushalt" hier eine andere Bezeichnung, nämlich "Haushaltswaren". Und schließlich fehlt hier die Gruppe "SP", "Spielwaren". Ich habe hier für diese MERGE-Tabelle auch andere Spaltenbezeichnungen verwendet. Anstelle von "Art.Gr." habe ich hier "ID" verwendet. Und anstelle des Gruppentexts "Gr.Text" die Spaltenbezeichnung "Bezeichnung". Wie kann ich nun diese Änderungen hier einarbeiten? Ich brauche hier drei einzelne Anweisungen, zuerst den geänderten Text "Haushalt" auf "Haushaltswaren". Dazu brauche ich ein Update, ein synchronisiertes Update, bei dem ich beide Tabellen, nämlich die "Artikelgruppen" und die Gruppen "1" joine. ich überschreibe die Bezeichnung in der Zieltabelle, der Tabelle "Artikelgruppen", mit der der Ausgangstabelle, der Tabelle "Bezeichnung". Nachdem ich aber nicht alle beschreiben möchte, sondern nur jene, die sich wirklich geändert haben, verwende ich diese Werkklausel um einzuschränken, dass ich nur dann eine Änderung vornehme, wenn die Bezeichnung unterschiedlich ist. Ich führe diese eine Anweisung nun einmal aus. Wir sehen hier beim Output, dass wir eine Zeile geändert haben, und ich kontrolliere diese Änderung in der Tabelle "Artikelgruppen". Und wir sehen, dass nun hier "Haushaltwaren" als Bezeichnung für diese Artikelgruppe aufscheint. Im zweiten Schritt sollen neue hinzugefügt werden. D.h. all jene, die es in der Ursprungstabelle, also in der Tabelle "Gruppen 1", gibt, aber in der Zieltabelle "Artikelgruppen" noch nicht. Dafür verwende ich ein "Select" mittels "Auto join", um alles herauszufiltern, was es nur in einer Tabelle gibt. Diese Anweisung liefert uns die fehlenden Artikelgruppen "Bücher" und "Blue Ray Discs". Um also diese einzufügen, führe ich diese Gesamtanweisung, kombiniert mit "Insert into", aus. Wir sehen jetzt hier, zwei Datensätze sind betroffen. Und die Kontrolle zeigt uns, dass in unserer Tabelle ebenso die zwei neuen Zeilen eingetragen worden sind. Der dritte Schritt ist es nun, nicht mehr vorhandene Daten zu löschen. Dazu verwenden wir diese "Und-Abfrage', in der wir alle vorhandenen Gruppenkürzel filtern. Sollte ein Kürzel nicht in dieser Gruppe enthalten sein, soll es gelöscht werden. Mit dieser Anweisung können wir das realisieren. Ich führe diese aus, kontrolliere den Output, und wir sehen auch hier: eine Zeile betroffen. Wir kontrollieren das Ergebnis, und nun entspricht unsere Tabelle "Artikelgruppen" dem Inhalt der Tabelle "Gruppen 1". Diese zwei neuen Zeilen sind eingefügt worden, dieser eine Text ist geändert worden sowie die eine Zeile mit der Artikelgruppe "Spielwaren" ist entfernt worden. Damit Sie diesen Test noch einmal durchführen können, habe ich die Tabelle "Gruppen 2" vorbereitet. Die Tabelle "Gruppen 2" enthält dieselben Daten wie die Ursprungstabelle "Artikelgruppen". D.h., wenn Sie hier einfach die Bezeichnung von "Gruppen 1" auf "Gruppen 2" tauschen in der Anweisung, dann machen Sie genau den umgekehrten Vorgang, und Sie setzen damit die Daten wieder zurück. Wenn Sie sich die Videos schon über "Transaktionen" angesehen haben, können Sie natürlich auch die Transaktion zurücksetzen, um die Ursprungsdaten wieder herzustellen. In unserem Fall starte ich die drei Anweisungen hintereinander, einmal, zweimal, dreimal, um nun in der Tabelle "Artikelgruppen" wieder unsere ursprünglichen neuen Zeilen zu finden. Sie haben also in diesem Video gesehen, wie Sie unter MySQL die Funktionalität einer MERGE-Anweisung nachstellen können. Verwenden Sie dazu drei separate Anweisungen: ein synchronisiertes Update um die Änderungen einzuarbeiten, ein "Insert" um neue Daten einzufügen, und ein "Delete", um in der Ursprungstabelle nicht mehr enthaltene Daten wieder zu löschen.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!