© zaozaa19/Shutterstock.com
SQL JOIN-Vorgänge sind ein leistungsstarkes Tool zum Abrufen von Daten aus mehreren Tabellen in einer relationalen Datenbank. Egal, ob Sie ein erfahrener Datenanalyst oder Programmierer sind oder einfach nur jemand, der mit Datenbanken anfängt, es ist wichtig, die Grundlagen von JOIN-Operationen zu verstehen: was sie sind und wie sie verwendet werden.
In diesem Artikel behandeln wir die verschiedenen Arten von JOIN-Vorgängen in SQL – INNER, LEFT, RIGHT und FULL – sowie Beispiele für jeden Typ anhand von Beispiel-SQL-Tabellen. Lass uns anfangen!
Was Genau genommen sind Joins in SQL?
Im Kern kombiniert eine SQL JOIN-Operation Daten aus zwei oder mehr Tabellen in einer einzigen Ergebnismenge. Diese Operation wird verwendet, wenn Sie Informationen aus mehreren Tabellen abrufen müssen, die über eine verknüpfte Spalte zwischen ihnen eine Art Beziehung haben. Die zugehörige Spalte wird Join-Bedingung genannt.
Die resultierende Tabelle enthält alle Spalten aus den kombinierten Tabellen, wobei die Zeilen gemäß der Join-Bedingung abgeglichen werden. Wenn Sie beispielsweise zwei Tabellen mit Kundenaufträgen bzw. Auftragsartikeln hätten, könnten Sie eine JOIN-Operation verwenden, um die Daten in einer Tabelle zu kombinieren, die alle Aufträge und die zugehörigen Artikel anzeigt.
Join-Typen in SQL
Wie bereits erwähnt, gibt es vier Haupttypen von Joins in SQL:
INNER JOIN, LEFT JOIN (oder LEFT OUTER JOIN), RIGHT JOIN oder (RIGHT OUTER JOIN) und FULL JOIN (oder FULL OUTER JOIN).
Jeder Typ funktioniert anders, je nachdem, welche Art von Beziehung zwischen den verknüpften Tabellen besteht. Sehen wir uns jeden einzelnen von ihnen im Detail an.
INNER JOIN
SQL führte das Konzept ein, mit einem einzigen Befehl auf viele Datensätze zuzugreifen, ohne angeben zu müssen, wie man sie erreicht.
©TippaPatt/Shutterstock.com
Ein INNER JOIN ist der am häufigsten verwendete Join-Typ in SQL. Es wird manchmal als „einfache Verknüpfung“ bezeichnet, und die Verwendung von JOIN anstelle von INNER JOIN in einer Abfrage ist syntaktisch korrekt. Einfache Joins werden verwendet, um Zeilen aus zwei oder mehr Tabellen basierend auf einer gemeinsamen Spalte zu kombinieren.
Die Operation INNER JOIN gibt nur die Zeilen zurück, in denen es eine Übereinstimmung zwischen den zugehörigen Spalten in beiden Tabellen gibt. Das bedeutet, dass diese Zeile nicht zurückgegeben wird, wenn es in einer der Tabellen keine Übereinstimmung gibt.
Um dieses Konzept weiter zu veranschaulichen, betrachten wir zwei SQL-Tabellen: Customers und Orders.
Customers Table
Bestelltabelle
Wir können INNER JOIN verwenden, um die von jedem Kunden getätigten Bestellungen zu erhalten, etwa so:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Kunden.CustomerID;
In der obigen Beispielabfrage haben wir INNER JOIN verwendet, um die Tabellen „Orders“ und „Customers“ basierend auf der Spalte „CustomerID“ zu kombinieren.
Das Abfrageergebnis lautet daher:
LEFT JOIN
Ein LEFT JOIN (oder LEFT OUTER JOIN) wird verwendet, um die Zeilen aus zwei oder mehr Tabellen basierend auf einer gemeinsamen Spalte zu kombinieren, gibt aber auch alle Zeilen aus der linken Tabelle (oder der ersten Tabelle im Join) zurück.
Eine LEFT JOIN-Operation gibt daher alle Zeilen aus der linken Tabelle und nur die passenden Zeilen aus der rechten Tabelle zurück. Wenn in der rechten Tabelle kein übereinstimmender Datensatz vorhanden ist, enthält das Ergebnis NULL-Werte in den Spalten der rechten Tabelle.
Unter Verwendung der Tabellen aus dem vorherigen Beispiel können wir den LEFT JOIN verwenden, um die Tabellen Customers und Orders (basierend auf der CustomerID) zu kombinieren, um sogar Bestellungen von allen Kunden zu erhalten wenn es keine Bestellungen für einen bestimmten Kunden gibt:
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID;
Das Ergebnis der Abfrage lautet:
Da Peter keine Bestellungen hat, enthält die OrderDate-Spalte für Peter wie erwartet NULL.
RIGHT JOIN
SQL basierte ursprünglich auf relationaler Algebra und Tupelrelationalrechnung.
©Miha Creative/Shutterstock.com
Ein RIGHT JOIN (oder RIGHT OUTER JOIN) funktioniert genauso wie ein LEFT JOIN, außer dass Sie gibt alle Zeilen aus der rechten Tabelle (oder der zweiten Tabelle im Join) zurück. Mit anderen Worten, eine RIGHT JOIN-Operation gibt alle Zeilen aus der rechten Tabelle und nur die übereinstimmenden Zeilen aus der linken Tabelle zurück.
Wenn es keine übereinstimmende Zeile in der linken Tabelle gibt, enthält das Ergebnis NULL-Werte in den Spalten der linken Tabelle. Unter Verwendung des vorherigen Beispiels können wir RIGHT JOIN verwenden, um alle Bestellungen zu erhalten, die von den Kunden aufgegeben wurden, wie folgt:
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID;
Die obige Abfrage liefert uns das folgende Ergebnis:
Wie erwartet ist Peter nicht im Abfrageergebnis enthalten, da er noch keine Bestellungen aufgegeben hat, während John zwei hat.
FULL JOIN
Eine FULL JOIN-Operation gibt alle Zeilen aus beiden Tabellen zurück, einschließlich der nicht übereinstimmenden Zeilen. Wenn es in einer der Tabellen keine Übereinstimmung gibt, enthält das Ergebnis NULL-Werte in den Spalten der Tabelle ohne Übereinstimmung.
Ein FULL JOIN kombiniert somit die Ergebnismengen sowohl eines LEFT JOIN als auch eines RIGHT JOIN. Es gibt alle Zeilen aus beiden Tabellen zurück, auch wenn es in der anderen Tabelle keine übereinstimmende Zeile gibt.
Unter Verwendung der gleichen Tabellen wie zuvor können wir einen FULL JOIN verwenden, um alle Bestellungen und Kunden zu erhalten, selbst wenn es keine Bestellungen für einen bestimmten Kunden gibt oder wenn es noch keine Kunden gibt, die noch Bestellungen aufgegeben haben, wie z also:
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
FULL JOIN Orders
ON Customers.CustomerID=Orders. CustomerID;
Dies ergibt folgendes Ergebnis:
Peter ist nun in der Abfrage enthalten Ergebnis, obwohl er noch keine Bestellungen getätigt hat und die OrderDate-Spalte für Peter NULL enthält.
FULL OUTER JOIN ist äquivalent zu FULL JOIN, und Sie können sie austauschbar verwenden.
Gibt es Alternativen zu den üblichen Joins in SQL?
Während Join-Operationen ein wesentliches Werkzeug zum Kombinieren von Daten aus mehreren Tabellen in SQL sind, gibt es alternative Methoden, die ähnliche Ergebnisse erzielen können. Zu diesen Methoden gehören Unterabfragen, UNION-und UNION ALL-Anweisungen. Lassen Sie uns jede dieser Alternativen kurz untersuchen, um zu sehen, wie sie im Vergleich zur Verwendung von JOINS abschneiden.
SQL-Unterabfragen
Unterabfragen sind verschachtelte Abfragen, die verwendet werden können, um Daten aus einer oder mehreren Tabellen abzurufen. Sie können zum Filtern, Sortieren oder Aggregieren von Daten verwendet und in andere Abfragen verschachtelt werden. Ein häufiger Anwendungsfall für Unterabfragen ist das Abrufen von Daten aus einer Tabelle basierend auf Daten aus einer anderen Tabelle.
Anstatt beispielsweise Daten aus den Tabellen”Bestellungen”und”Kunden”mit einem Join zu kombinieren, können Sie eine Unterabfrage verwenden zum Abrufen von Daten aus der Customers-Tabelle basierend auf Daten aus der Orders-Tabelle:
SELECT CustomerName, City
FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders );
Diese Abfrage gibt alle Kunden zurück, die eine Bestellung aufgegeben haben, zusammen mit ihrer Stadt.
UNION-Anweisung
Die UNION-Anweisung wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Anweisungen in einer einzigen Ergebnismenge. Sie ähnelt einer Join-Operation, da sie Daten aus mehreren Tabellen kombiniert, aber keine gemeinsame Spalte zwischen den Tabellen benötigt.
Zum Beispiel können Sie UNION verwenden, um Daten aus Kunden und Bestellungen zu kombinieren Tabellen mit denselben Spalten:
SELECT CustomerName, ContactName, City FROM Customers
UNION
SELECT CustomerName, ContactName, City FROM Orders;
Die obige Abfrage gibt eine Ergebnismenge zurück, die alle Kunden und Bestellungen mit ihren Namen und Orten enthält.
UNION ALL-Anweisung
Die UNION ALL-Anweisung ähnelt der UNION-Anweisung, entfernt jedoch keine Duplikate aus der Ergebnismenge. Das bedeutet, dass alle Zeilen aus beiden Tabellen enthalten sind, auch wenn es Duplikate gibt.
Zum Beispiel
SELECT CustomerName, City FROM Customers
UNION ALL
SELECT CustomerName, ShipCity FROM Orders;
Diese Abfrage liefert uns eine Ergebnismenge, die alle Kunden und Bestellungen mit ihren Namen und Orten enthält, auch wenn es Duplikate gibt.
p>
Was wäre der Vorteil der Verwendung von Joins in SQL gegenüber anderen Alternativen?
Während die oben genannten Alternativen verwendet werden können, um Daten aus mehreren Tabellen zu kombinieren und uns die erwarteten Ergebnisse zu liefern, sind Joins die meisten effiziente Art und Weise, dies zu tun. Ein wesentlicher Vorteil von Join-Operationen besteht darin, dass sie im Allgemeinen effizienter sind als Unterabfragen und UNION-Operationen.
Join-Vorgänge ermöglichen es Ihnen, Daten aus mehreren Tabellen in einer einzigen Abfrage abzurufen, was effizienter sein kann, als mehrere Abfragen oder verschachtelte Unterabfragen auszuführen, um dasselbe Ergebnis zu erzielen.
Verknüpfungen sind auch eine intuitivere Methode, um Daten aus mehreren Tabellen zu kombinieren, da Sie anhand der Beziehung zwischen den Tabellen genau angeben können, wie die Daten verknüpft werden sollen. Dies kann es im Laufe der Zeit erleichtern, Abfragen zu verstehen und zu ändern, da die Join-Bedingungen klar angeben, wie die Daten kombiniert werden.
Natürlich kann es Situationen geben, in denen Unterabfragen oder UNION-Vorgänge besser geeignet sind als Joins Operationen, abhängig von den spezifischen Anforderungen der Abfrage. Im Allgemeinen bieten Joins jedoch im Vergleich zu anderen Methoden eine einfachere, leistungsfähigere und effizientere Möglichkeit, Daten aus mehreren Tabellen in SQL zu kombinieren.
Abschluss
SQL-Joins sind entscheidend für Abfragen und Bearbeiten von Daten, die in Datenbanken gespeichert sind. Sie sind im Zusammenhang mit relationalen Datenbanken sehr hilfreich, da sie es uns ermöglichen, komplexe Datenabfragen zu erstellen, die sonst unmöglich wären.
Jeder Join-Vorgang hat seinen Anwendungsfall, und Sie sollten den geeigneten auswählen, basierend auf den Daten, mit denen Sie arbeiten, und der Art des Ergebnisses, das Sie erhalten möchten. Durch die Beherrschung der vier Arten von Joins in SQL – INNER, LEFT, RIGHT und FULL – können Sie effizient mit Datenbanken arbeiten und aussagekräftige Erkenntnisse aus Ihren Daten extrahieren.
Was sind Joins in SQL (Inner, Left, Richtig und vollständig) – mit Beispielen FAQs (Frequently Asked Questions)
Welche Bedeutung haben JOINS in SQL-Abfragen?
Join-Operationen in SQL werden verwendet um Daten aus zwei oder mehr Tabellen in einem einzigen Ergebnissatz zu kombinieren. Diese Operation wird verwendet, wenn Sie Informationen aus mehreren Tabellen abrufen müssen, die eine Art Beziehung durch eine verknüpfte Spalte zwischen ihnen haben.
Was ist der Unterschied zwischen einem LEFT JOIN und einem RIGHT JOIN ?
Ein LEFT JOIN (oder LEFT OUTER JOIN) kombiniert die Zeilen aus zwei oder mehr Tabellen basierend auf einer gemeinsamen Spalte, gibt aber auch alle Zeilen aus der linken Tabelle zurück. Ein RIGHT JOIN (oder RIGHT OUTER JOIN) ist dasselbe wie ein LEFT JOIN, außer dass er alle Zeilen aus der rechten Tabelle zurückgibt.
Was ist der Zweck eines FULL JOIN in SQL?
Ein FULL JOIN-Vorgang gibt alle Zeilen aus beiden Tabellen zurück, einschließlich der nicht übereinstimmenden Zeilen. Wenn es in einer der Tabellen keine Übereinstimmung gibt, enthält das Ergebnis NULL-Werte in den Spalten der Tabelle ohne Übereinstimmung.
Was sind einige Best Practices bei der Verwendung von JOIN-Operationen in SQL?
Einige Best Practices bei der Verwendung von Joins in SQL umfassen die Verwendung des richtigen Join-Typs basierend auf den Daten und dem Ergebnistyp, den Sie erhalten möchten, die Verwendung von Aliasen, um Ihre Abfrage lesbarer zu machen, und/oder Verwenden Sie die WHERE-Klausel, um das Abfrageergebnis zu verfeinern.
Können Sie mehr als zwei Tabellen in einer SQL-JOIN-Operation verwenden?
Ja, Sie können mehr verwenden als zwei Tabellen in einem SQL-Join-Vorgang. Sie können mehrere Tabellen verknüpfen, indem Sie die Verknüpfungsbedingungen in der ON-Klausel der Abfrage angeben. Die ON-Klausel kann mehrere Join-Bedingungen enthalten, die durch AND-oder OR-Operatoren getrennt sind.