Direkt zum Inhalt
HeimAnleitungenSQL

SQL UPDATE mit JOIN: Wie es funktioniert

Lerne, wie UPDATE mit JOIN in SQL tabellenübergreifende Aktualisierungen in SQL Server vereinfacht. Verstehe, wie sich INNER JOIN und LEFT JOIN für bestimmte Anwendungsfälle unterscheiden, und erkunde Alternativen mit Unterabfragen oder der MERGE-Anweisung.
Aktualisierte 1. Okt. 2024  · 9 Min. lesen

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 der JOIN 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

Werde ein Dateningenieur durch fortgeschrittenes Python-Lernen
Kostenloses Lernen Beginnen

Photo of Allan Ouko
Author
Allan Ouko
LinkedIn
Ich verfasse Artikel, die Datenwissenschaft und Analytik vereinfachen und leicht verständlich und zugänglich machen.

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.

Themen

Lerne SQL mit DataCamp

Zertifizierung verfügbar

Course

Daten in SQL verknüpfen

4 hr
164.6K
Erweitere deine SQL-Kenntnisse und lerne, Tabellen miteinander zu verbinden, die relationale Mengenlehre anzuwenden und mit Unterabfragen zu arbeiten.
See DetailsRight Arrow
Start Course
Zertifizierung verfügbar

Course

Datenmanipulation in SQL

4 hr
235K
Beherrsche die komplexen SQL-Abfragen, die notwendig sind, um eine Vielzahl von datenwissenschaftlichen Fragen zu beantworten und robuste Datensätze für die Analyse in PostgreSQL vorzubereiten.
Mehr anzeigenRight Arrow