Was ist Upsert und wie es in MySQL macht

Was ist Upsert und wie es in MySQL macht
Datenbanken sind zu einem wesentlichen Bestandteil der heutigen Gesellschaft geworden. Datenbanken helfen uns, unsere Daten effizienter zu speichern und Fehler zu reduzieren. Von einem kleinen Geschäft zu einem multinationalen Unternehmen verwenden alle Datenbanken, um ihre Informationen zu speichern. Sie können argumentieren, dass Informationen in organisierter Tabelle in einer Tabelle gespeichert werden können.

Dies ist zwar technisch korrekt, aber praktisch, aber sehr katastrophal. Der Grund dafür ist, dass beim Wachstum der Daten viele Entlassungen und nutzlose Daten gespeichert werden. Viele der Zeiten können die Daten sogar konflikt. So etwas kann für jedes Unternehmen sehr schädlich sein. Die Lösung besteht darin, die Daten in einer Datenbank zu speichern.

Das Datenbankverwaltungssystem oder DBMS ist kurz gesagt eine Software, mit der die Benutzer ihre Datenbank verwalten können. Im Umgang mit riesigen Datenbrocken wird eine Datenbank verwendet. Das Datenbankverwaltungssystem bietet Ihnen viele kritische Funktionen. Upsert ist eines dieser Merkmale. Upsert zeigt als Name eine Kombination von zwei Wörtern an, die aktualisieren und einfügen. Die ersten beiden Buchstaben stammen aus dem Update, während die restlichen vier aus dem Einfügen stammen. UpSt ermöglicht es dem Autor der Datenmanipulationssprache (DML), eine neue Zeile einzufügen oder eine vorhandene Zeile zu aktualisieren. Upsert ist eine Atomoperation, was bedeutet, dass es sich um eine einstufige Operation handelt.

Standardmäßig bietet MySQL die Option zur Einfügung der doppelten Schlüsselaktualisierung, mit der diese Aufgabe ausgeführt wird. Andere Aussagen können jedoch verwendet werden, um diese Aufgabe zu erledigen. Dazu gehören Aussagen wie Ignorieren, Ersetzen oder Einfügen.

Sie können Upsert mit MySQL auf drei Arten durchführen.

  1. Störungen mit Insert ignorieren
  2. Störungen mit Ersetzen
  3. Upsert verwenden auf doppelter Schlüsselaktualisierung

Bevor wir uns weiter bewegen, werde ich meine Datenbank für dieses Beispiel verwenden, und wir werden in MySQL Workbench arbeiten. Ich verwende derzeit Version 8.0 Community Edition. Der Name der für dieses Tutorial verwendeten Datenbank ist Sakila. Sakila ist eine Datenbank mit sechzehn Tabellen. Wir werden uns auf die Store -Tabelle in dieser Datenbank konzentrieren. Diese Tabelle enthält vier Attribute und zwei Zeilen. Das Attribut Store_id ist der Hauptschlüssel.

Lassen Sie uns sehen, wie sich die oben genannten Wege auf diese Daten auswirken.

Störungen mit Insert ignorieren

Ignorieren einfügen, wie MySQL Ihre Ausführungsfehler ignoriert, wenn Sie einen Einsatz ausführen. Wenn Sie also einen neuen Datensatz mit demselben Primärschlüssel wie einer der Datensätze in der Tabelle einfügen, erhalten Sie einen Fehler. Wenn Sie diese Aktion jedoch mit ignorieren Insert ignorieren, wird der resultierende Fehler unterdrückt.

Hier versuchen wir, den neuen Datensatz mit der Standard -MySQL -Einfügeanweisung hinzuzufügen.

Wir erhalten den folgenden Fehler.

Wenn wir jedoch dieselbe Funktion mit ignorieren Insert ignorieren, erhalten wir keinen Fehler. Stattdessen erhalten wir die folgende Warnung, und MySQL ignoriert diese Einfügungsanweisung. Diese Methode ist von Vorteil, wenn Sie Ihrer Tabelle enorme Mengen neuer Datensätze hinzufügen. Wenn es also einige Duplikate gibt, ignoriert MySQL sie und fügt die verbleibenden Datensätze zur Tabelle hinzu.

Upsert mit Ersatz:

Unter bestimmten Umständen möchten Sie möglicherweise Ihre vorhandenen Datensätze aktualisieren, um sie auf dem neuesten Stand zu halten. Durch die Verwendung von Standardeinsätzen hier erhalten Sie einen doppelten Eintrag für den Primärschlüsselfehler. In dieser Situation können Sie Ersatz verwenden, um Ihre Aufgabe auszuführen. Wenn Sie verwenden, ersetzen Sie zwei beliebige zwei bei den folgenden Ereignissen.

Es gibt einen alten Rekord, der zu diesem neuen Rekord passt. Ersetzen Sie in diesem Fall Arbeiten wie eine Standardanweisung und fügt den neuen Datensatz in der Tabelle ein. Der zweite Fall ist, dass einige frühere Datensatz. Ersetzen Sie hier Aktualisierungen des vorhandenen Datensatzes.

Die Aktualisierung erfolgt in zwei Schritten. Im ersten Schritt wird der vorhandene Datensatz gelöscht. Dann wird der neu aktualisierte Datensatz wie ein Standardeinsatz hinzugefügt. Daher führt es zwei Standardfunktionen aus, löschen und einfügen. In unserem Fall haben wir die erste Zeile durch neu aktualisierte Daten ersetzt.

Im folgenden Bild können Sie sehen, wie in der Nachricht „2 Zeile betroffen“ heißt, während wir die Werte einer einzelnen Zeile nur ersetzt oder aktualisiert haben. Während dieser Aktion wurde der erste Datensatz gelöscht und dann der neue Datensatz eingefügt. Daher heißt es in der Nachricht: „2 Zeile betroffen.”

Upsert Verwenden von Einfügen… auf doppelte Schlüsselaktualisierung:

Bisher haben wir uns zwei Upsert -Befehle angesehen. Möglicherweise haben Sie festgestellt, dass jede Methode ihren Mangel oder ihre Einschränkungen hatte, wenn Sie können. Der Befehl ignorieren, obwohl er den doppelten Eintrag ignoriert hat, aber es wurde keine Datensätze aktualisiert. Der Befehl Ersatz, obwohl es aktualisiert wurde, war es technisch gesehen nicht aktualisiert. Es löschte und dann die aktualisierte Zeile einfügte.

Eine beliebtere und effektiver. Im Gegensatz zu Ersatz, der eine zerstörerische Methode ist, ist diese Methode nicht zerstörerisch, was bedeutet, dass die doppelten Zeilen nicht zuerst fallen. Stattdessen aktualisiert es sie direkt. Ersteres kann viele Probleme oder Fehler verursachen, was eine destruktive Methode ist. Abhängig von Ihren fremden Schlüsselbeschränkungen kann dies zu einem Fehler führen oder in einem Worst-Case-Szenario, wenn Ihr Fremdschlüssel auf Kaskade eingestellt ist, die Zeilen aus der anderen verknüpften Tabelle löschen kann. Dies kann sehr verheerend sein. Wir verwenden diese nicht-zerstörerische Methode, da sie viel sicherer ist.

Wir werden die Datensätze ändern, die mithilfe von Ersatz auf ihre ursprünglichen Werte aktualisiert wurden. Dieses Mal werden wir die Methode für doppelte Schlüsselaktualisierung verwenden.

Beachten Sie, wie wir Variablen verwendet haben. Diese können nützlich sein, da Sie immer wieder Werte in der Anweisung hinzufügen müssen, um die Fehlerchancen zu verringern. Das Folgende ist die aktualisierte Tabelle. Um es aus der ursprünglichen Tabelle zu unterscheiden, haben wir das last_update -Attribut geändert.

Abschluss:

Hier haben wir erfahren, dass UPSert eine Kombination von zwei Wörtern ist Update und Einfügen ist. Es funktioniert nach dem folgenden Prinzip, dass, wenn in der neuen Zeile keine Duplikate einfügen und wenn Duplikate die entsprechende Funktion gemäß der Anweisung ausführen. Es gibt drei Methoden zur Durchführung von Störungen. Jede Methode hat einige Grenzen. Am beliebtesten ist die Methode für doppelte Schlüsselaktualisierung. Abhängig von Ihren Anforderungen kann jeder der oben genannten Methoden für Sie mehr nützlich sein. Ich hoffe, dieses Tutorial ist für Sie hilfreich.