Course
SQL UPDATE mit JOIN: Wie es funktioniert
Konsistente Daten sind wichtig für die Zuverlässigkeit und Integrität von relationalen Datenbanken. Wenn wir bestehende Daten in Bezugstabellen ändern, verwenden wir die UPDATE
Anweisung mit der JOIN
Klausel, um Datenkonsistenz zu erreichen. Die Operation UPDATE
mit JOIN
wird in SQL Server unterstützt und ist nützlich, um eine genaue Datensynchronisation zwischen den Tabellen zu gewährleisten.
Die SQL-Operation JOIN
ermöglicht komplexere Aktualisierungen, die über die Operationen für eine einzelne Tabelle hinausgehen, durch Fremdschlüssel, die in den verschiedenen Tabellen gemeinsam genutzt werden. Der UPDATE
mit JOIN
Betrieb ist für Entwickler und Datenbankadministratoren nützlich, da er die Effizienz verbessert und das Risiko von Dateninkonsistenzen verringert.
Bevor du loslegst, empfehle ich dir den Kurs Einführung in SQL Server von DataCamp, um dich mit der Funktionsweise von SQL Server-Datenbanken vertraut zu machen. Diese Anleitung ist speziell für SQL Server geschrieben. Schau dir auch unseren Lehrgang Einführung in SQL-Joins an, um zu erfahren, wie du JOIN
bei der Arbeit mit mehreren Tabellen in SQL verwenden kannst.
Wie man SQL UPDATE mit JOIN verwendet
In SQL Server ermöglicht die Operation UPDATE
mit JOIN
die Aktualisierung von Datensätzen in einer Tabelle auf der Grundlage von übereinstimmenden Daten aus einer anderen Tabelle. Diese Technik ist besonders nützlich, wenn du Daten über mehrere Tabellen hinweg synchronisieren willst.
Verwendung von SQL UPDATE mit INNER JOIN
Die INNER JOIN
in SQL ruft Zeilen/Datensätze mit übereinstimmenden Daten in beiden Tabellen ab. In Verbindung mit der Anweisung UPDATE
stellt INNER JOIN
sicher, dass nur die Datensätze in der Zieltabelle aktualisiert werden, die in der verbundenen Tabelle übereinstimmen.
Die typische Struktur von UPDATE
mit INNER JOIN
beinhaltet die Angabe der zu aktualisierenden Zieltabelle und die Definition der zu aktualisierenden Spalten. Die Struktur beinhaltet auch die Verwendung der INNER JOIN
, um sie mit einer anderen Tabelle zu verknüpfen, die auf einer gemeinsamen Spalte basiert, um nur die benötigten Datensätze zu aktualisieren.
INNER JOIN Beispiel
Angenommen, du verwaltest eine Handelsdatenbank und musst eine Tabelle Sales
aktualisieren, um sie mit den Änderungen in der Tabelle Customer
zu synchronisieren. Ein Kunde hat kürzlich seine bevorzugte Kontaktmethode geändert, und du möchtest, dass diese Änderungen in den beiden Tabellen berücksichtigt werden. Du verwendest UPDATE
mit INNER JOIN
, um sicherzustellen, dass nur die Verkaufsdatensätze von Kunden, die ihre Kontaktinformationen aktualisiert haben, geändert werden, ohne dass sich dies auf andere Zeilen der Daten auswirkt.
-- Update the Sales table based on the new preferred contact methods in the Customers table
UPDATE s
SET s.ContactMethod = c.PreferredContactMethod
FROM Sales s
INNER JOIN Customers c ON s.CustomerID = c.CustomerID
WHERE c.CustomerID IN (3, 7, 9);
UPDATE mit INNER JOIN Best Practices
Wenn du UPDATE
mit INNER JOIN
verwendest, beachte die folgenden Best Practices für effiziente Abfragen.
-
Verwende Indizes für Join-Spalten: Stelle sicher, dass die in der
JOIN
Bedingung verwendeten Spalten indiziert sind, um die Leistung zu optimieren und die Ausführung der Abfrage zu beschleunigen. -
Beschränke den Umfang der Aktualisierung: Verwende die
WHERE
Klausel, um sicherzustellen, dass nur die relevanten Zeilen aktualisiert werden und die Abfrageleistung zu verbessern.
Verwendung von SQL UPDATE mit LEFT JOIN
Eine LEFT JOIN
wird verwendet, um alle Datensätze aus der linken (ersten) Tabelle und die passenden Datensätze aus der rechten (zweiten) Tabelle abzurufen. Eine Abfrage mit LEFT JOIN
liefert NULL
Ergebnisse aus der richtigen Tabelle, wenn es keine passenden Ergebnisse gibt. In Verbindung mit der Anweisung UPDATE
kann LEFT JOIN
Datensätze auch dann aktualisieren, wenn es keine übereinstimmenden Daten in der zweiten Tabelle gibt, was nützlich ist, um fehlende Daten zu ergänzen. Sehen Sie sich unser SQL Joins Spickzettel wenn du dich mit SQL-Joins beschäftigen möchtest.
LEFT JOIN Beispiel
Stell dir vor, du verwaltest eine Datenbank für ein Online-Geschäft. Die Tabelle Customers
enthält eine Liste aller Kunden, während die Tabelle Orders
Details zu den Bestellungen einiger dieser Kunden enthält. Du wirst die LEFT JOIN
verwenden, um die Bestelldaten aller Kunden abzurufen und zu aktualisieren, auch derjenigen, die noch keine Bestellung aufgegeben haben. Mit dieser Methode werden die fehlenden Daten für die Kunden aufgefüllt, die keine Bestellungen mit einem NULL
oder einem bestimmten Wert aufgegeben haben.
Unser Beispiel mit LEFT JOIN
wird ein wenig anders sein, weil LEFT JOIN
die Werte von NULL
zurückgibt, wenn keine passenden Datensätze in der richtigen Tabelle gefunden werden. Deshalb ist es wichtig, herauszufinden, wie man mit diesen NULL
Werten umgeht. Du kannst die NULL
Werte handhaben, indem du einen Standardwert in den zu aktualisierenden Spalten festlegst. Mit der Funktion COALESCE()
wird die LEFT JOIN
eine Bedingung für einen Standardwert für die fehlenden Daten enthalten. Die folgende Abfrage zeigt, wie du einen Standardwert für NULL
Werte festlegen kannst.
-- Update all customers to set default values where OrderStatus and OrderDate are NULL
UPDATE c
SET
c.OrderStatus = COALESCE(o.OrderStatus, 'No Orders'),
c.OrderDate = COALESCE(o.OrderDate, '2023-01-01')
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;
-- Select from the updated Customers table
SELECT *
FROM Customers;
Du kannst auch die Funktionen COALESCE()
oder IFNULL()
verwenden, um NULL
Werte zu behandeln, die Berechnungen beinhalten, bevor du die Spalten aktualisierst. In unserem Tutorial zur SQL-Funktion COALESCE() erfährst du mehr.
UPDATE mit LEFT JOIN Best Practices
Wenn du UPDATE
mit LEFT JOIN
verwendest, beachte die folgenden Best Practices für effiziente Abfragen.
-
Verwende explizite Spaltenreferenzen: Anstatt
SELECT *
zu verwenden, gibst du die Spalten, die du aktualisieren möchtest, explizit an, um deine Abfrage übersichtlicher zu gestalten und unbeabsichtigte Aktualisierungen zu vermeiden. -
Verwende Indizes für Join-Spalten: Stellen Sie sicher, dass die in der
JOIN
Bedingung verwendeten Spalten indiziert sind, um die Leistung derJOIN
Operation und die Gesamtausführungszeit der Abfrage zu verbessern.
SQL Update mit Join Leistungsüberlegungen
Uas Verständnis der Auswirkungen auf die Leistung bei der Verwendung von UPDATE
mit JOIN
in SQL ist wichtig, um sicherzustellen, dass deine Abfragen effizient laufen. Die Leistung dieser Operationen kann von mehreren Faktoren beeinflusst werden, z. B. von der Größe der verwendeten Tabellen, der Art der Verknüpfung und davon, ob geeignete Indizes vorhanden sind.
Indizes und Abfragegeschwindigkeit
Die Indizierung der an der Join-Bedingung beteiligten Spalten ist wichtig, um den Aktualisierungsprozess zu beschleunigen. Wenn du die Spalten entsprechend indizierst, werden bei der Verknüpfung nur die übereinstimmenden Zeilen gefunden, was die Zeit für den Tabellenscan reduziert.
Auswirkungen von großen Datensätzen
Bei der Arbeit mit großen Datensätzen kann die Ausführung von Abfragen aufgrund von ressourcenintensiven Operationen langsamer sein. Beachte die folgenden Best Practices, um Leistungsprobleme bei großen Datenmengen zu vermeiden. Probiere auch den Skill Track SQL Server für Datenbankadministratoren aus, wenn du im Rahmen deiner Arbeit regelmäßig Datenbanken entwirfst oder wartest.
-
Batch Updates: Teile die Aktualisierungen in kleinere Stapel auf, um die Belastung der Datenbank zu verringern und die Datensätze effizient zu aktualisieren.
-
Beschränke den Umfang der Aktualisierung: Wenn du die
WHERE
Klausel verwendest, gibst du die zu aktualisierenden Zeilen an und reduzierst so die Verarbeitungszeit der Abfragen.
Häufige Fehler und wie du sie vermeidest
Es gibt einige häufige Fehler, die bei der Verwendung von UPDATE
mit JOIN
in SQL Server auftreten können. Diese Fehler können zu Leistungsproblemen oder zur Aktualisierung von unbeabsichtigten Daten führen. Im Folgenden findest du einige dieser Fehler und wie du sie vermeiden kannst.
Unbeabsichtigte Aktualisierungen
Wenn du die Verknüpfungsbedingung nicht richtig angibst, aktualisiert die UPDATE
mit JOIN
mehr Datensätze als beabsichtigt. Dieser Fehler führt dazu, dass die gesamte Tabelle aktualisiert wird, anstatt der erforderlichen Teilmenge. Um diesen Fehler zu vermeiden, solltest du immer eine genaue JOIN
Bedingung verwenden, um die erforderlichen Zeilen zu aktualisieren.
Kartesische Produkte
Ein kartesisches Produkt tritt auf, wenn die Verknüpfungsbedingung falsch ist oder fehlt, was dazu führt, dass die Abfrage jede Zeile aus der linken Tabelle mit jeder Zeile aus der rechten Tabelle abgleicht. Dieses Problem kann die Abfrage verlangsamen und ungenaue Ergebnisse liefern. Um diesen Fehler zu vermeiden, solltest du immer sicherstellen, dass du die Bedingung JOIN
richtig definiert hast. Achte außerdem darauf, dass du die richtigen Spalten angibst, um die Verknüpfungsbedingung anzuwenden.
SQL UPDATE mit JOIN-Alternativen
Obwohl UPDATE
mit JOIN
eine leistungsstarke Methode ist, um Datensätze in Bezugstabellen zu aktualisieren, gibt es alternative Methoden, um die Aktualisierung zu erreichen. Im Folgenden sind einige Optionen aufgeführt.
Unterabfragen
Unterabfragen sind eine wichtige Alternative zu JOIN
, wenn du Aktualisierungen auf der Grundlage einer einfachen Bedingung durchführen willst. Mit Subqueries vermeidest du mehrere komplexe Tabellen, indem du die Bedingung in der Subquery angibst.
Das folgende Beispiel zeigt, wie du eine Unterabfrage verwendest, um die Tabelle Sales
mit den neuesten CustomerStatus
aus der Tabelle Customers
zu aktualisieren.
-- Update the CustomerStatus in the Sales table
UPDATE Sales
-- Set the CustomerStatus in Sales to corresponding value from the Customers table
SET CustomerStatus = (
-- Fetch CustomerStatus from the Customers table for the matching CustomerID
SELECT CustomerStatus
FROM Customers
WHERE Customers.CustomerID = Sales.CustomerID
)
-- Update rows in Sales where a matching CustomerID exists in the Customers table
WHERE EXISTS (
-- Subquery to check if a matching CustomerID exists in the Customers table
SELECT 1
FROM Customers
WHERE Customers.CustomerID = Sales.CustomerID
);
MERGE-Anweisung
Die MERGE
Anweisung ist ein vielseitiger SQL-Befehl, mit dem du UPDATE
, INSERT
oder DELETE
Operationen in einer einzigen Abfrage durchführen kannst, die auf dem Vergleich zweier Tabellen basiert. Die Anweisung MERGE
ist nützlich, wenn du Daten zwischen zwei Tabellen synchronisieren musst, indem du übereinstimmende und nicht übereinstimmende Zeilen behandelst.
Die Anweisung MERGE
ist hilfreich, weil sie eine prägnante Methode zur Durchführung mehrerer Operationen in einer Abfrage bietet. Die Syntax der Anweisung MERGE
lautet wie folgt.
-- Merge data from the source table into the target table
MERGE INTO target_table AS target
USING source_table AS source
-- Define the common key between the source and target tables
ON target.common_column = source.common_column
-- When a match is found in both tables based on the common key
WHEN MATCHED THEN
-- Update the target table's column with the corresponding value from the source table
UPDATE SET target.column = source.column
-- When a row exists in the source table but not in the target table
WHEN NOT MATCHED THEN
-- Insert the new data into the target table
INSERT (column1, column2)
VALUES (source.column1, source.column2)
-- When a row exists in the target table but not in the source table
WHEN NOT MATCHED BY SOURCE THEN
-- Delete the row from the target table
DELETE;
Fazit
Die Verwendung von UPDATE
mit JOIN
in SQL Server ist wichtig für effiziente tabellenübergreifende Datenaktualisierungen in relationalen Datenbanken. Mit dieser Technik kannst du Datensätze in einer Tabelle auf der Grundlage übereinstimmender Daten in einer anderen Tabelle aktualisieren und so die Datenkonsistenz und -synchronisation zwischen verbundenen Tabellen sicherstellen. Die Anwendung dieser Techniken und Best Practices kann deinen Datenbankbetrieb verbessern und eine genaue, effiziente und zuverlässige Datenverwaltung gewährleisten.
Wenn du deine SQL-Kenntnisse erweitern möchtest, empfehle ich dir den SQL Server Fundamentals Skill Track von DataCamp, um deine Datenanalysekenntnisse zu verbessern. Der Kurs Writing Functions and Stored Procedures in SQL Server hilft dir außerdem, eine effiziente Datenmanipulation in SQL Server zu erlernen. Wenn du dich auf dein SQL-Interview vorbereitest, empfehle ich dir, unseren Blogbeitrag 20 Top SQL Joins Interview Questions zu lesen, um dich vorzubereiten. Wenn du deine SQL-Kenntnisse in einer Karriere als Dateningenieur/in einsetzen möchtest, solltest du auch unsere Ausbildung zum/zur Dateningenieur/in in Python absolvieren, die mit einer Zertifizierung abschließt.
Werde Dateningenieur
Häufig gestellte SQL-Fragen
Was ist der Zweck von UPDATE mit JOIN in SQL?
UPDATE
mit JOIN
ermöglicht es dir, Datensätze in einer Tabelle auf der Grundlage von übereinstimmenden Daten aus einer anderen Tabelle zu aktualisieren.
Wie unterscheidet sich ein INNER JOIN von einem LEFT JOIN, wenn er in einer UPDATE-Anweisung verwendet wird?
Eine INNER JOIN
aktualisiert nur die Datensätze, die übereinstimmende Zeilen in beiden Tabellen haben, während eine LEFT JOIN
alle Datensätze in der Zieltabelle aktualisiert, einschließlich derjenigen, die keine übereinstimmende Zeile in der verbundenen Tabelle haben, indem sie fehlende Daten auffüllt oder NULL
Werte behandelt.
Was sind die Leistungsprobleme von UPDATE mit JOIN in SQL?
Große Tabellen/Datensätze können die Abfrageleistung von UPDATE
mit JOIN
beeinträchtigen, da sie mehr Rechenleistung erfordern.
Welche Datenbanken unterstützen UPDATE mit JOIN IN SQL?
Das Konzept UPDATE
mit JOIN
funktioniert in SQL Server, MySQL und PostgreSQL, wobei sich die Syntax je nach Datenbankunterscheidet. Oracle unterstützt UPDATE
nicht direkt mit JOIN
und erfordert einen anderen Ansatz mit Unterabfragen oder der Anweisung MERGE
.
Was sind die Alternativen zu UPDATE mit JOIN in SQL?
Die Verwendung von Unterabfragen oder der Anweisung MERGE
sind geeignete Alternativen zu UPDATE
mit JOIN
.
Lerne SQL mit DataCamp
Course
Datenmanipulation in SQL
Course