Zurück zur Artikelliste Artikel
9 Leseminuten

5 Best Practices für das Schreiben von SQL JOINs

Diese Best Practices für SQL-JOINs helfen Ihnen, lesbare SQL-Abfragen zu erstellen, die genaue, klare und verständliche Ergebnisse liefern.

In Anbetracht der Tatsache, dass relationale Datenbanken auf zusammenhängenden Tabellen aufgebaut sind, ist es kein Wunder, dass SQL-JOINs - die es Ihnen ermöglicht, Informationen aus mehreren Tabellen zu kombinieren - eine der wichtigsten Fähigkeiten ist, die SQL-Neulinge erwerben. SQL-JOINs Der Kurs von LearnSQL.de ist der perfekte Ort, um Ihr Wissen über JOINs aufzufrischen. Wenn Sie möchten, dass Ihre SQL-Abfragen funktionieren und professionell aussehen, müssen Sie die Best Practices von SQL-JOINs befolgen. Einige von ihnen habe ich in diesem Artikel zusammengefasst.

SQL-JOINs Überblick

Nehmen wir an, Sie möchten alle Bestellungen einer Reihe von Kunden zusammen mit deren vollständigen Namen anzeigen. Klingt ziemlich einfach, oder? In der Praxis ist es jedoch unwahrscheinlich, dass Sie Informationen über Kunden und Bestellungen in ein und derselben Tabelle finden. Die Tabelle "Bestellungen" kann eine Kunden-ID für jede Bestellung enthalten, aber normalerweise nichts weiter über die Kunden.

Zum Kombinieren von Informationen aus den customers und orders zu kombinieren, müssen Sie diese Tabellen auf der Grundlage eines gemeinsamen Spaltenwerts (d. h. der Kunden-ID-Nummer) verknüpfen. So könnte Ihre SQL-Abfrage aussehen, wenn Sie alle Spalten aus beiden Tabellen sehen möchten:

SELECT *
FROM customers
JOIN orders
ON customers.id = orders.customer_id;

In der SELECT Klausel geben Sie an, welche Spalten Sie in der Ausgabe sehen möchten. Dann geben Sie den Namen einer Tabelle in der FROM -Klausel und den Namen einer anderen Tabelle in der JOIN -Klausel an. Schließlich geben Sie in der ON -Klausel an, welche Spalten aus jeder Tabelle für die Verknüpfung verwendet werden sollen.

Sie können die SQL JOIN-Syntax mit unserem SQL-JOINs interaktiven Kurs üben, der 93 Codieraufgaben enthält. Wenn Sie SQL-JOINs noch nicht kennen, lesen Sie meine Schritt-für-Schritt-Anleitung zum Verbinden von Tabellen in SQL.

Bevor wir die bewährten SQL JOIN-Verfahren durchgehen, möchte ich Sie kurz an die verschiedenen Arten von SQL-JOINs erinnern:

  • INNER JOIN (oder einfach JOIN) ist der grundlegende Join-Typ. Er wird verwendet, um übereinstimmende Datensätze aus beiden Tabellen anzuzeigen.
  • LEFT JOIN (oder LEFT OUTER JOIN) wird verwendet, um alle Datensätze aus der linken Tabelle und nur übereinstimmende Datensätze aus der rechten Tabelle zu erhalten .
  • RIGHT JOIN (oder RIGHT OUTER JOIN) wird verwendet, um alle Datensätze aus der rechten Tabelle und nur die übereinstimmenden Datensätze aus der linken Tabelle zu behalten.
  • FULL JOIN (oder FULL OUTER JOIN) wird verwendet, um alle Datensätze aus allen Tabellen zu behalten, auch die, die nicht übereinstimmen.
  • CROSS JOIN gibt eine Ergebnismenge mit allen möglichen Kombinationen der Zeilen aus zwei Tabellen zurück.

Hier ist mein Artikel mit Beispielen für verschiedene SQL JOIN-Typen.

SQL JOIN ist ein leistungsfähiges Werkzeug, das weit über das einfache Verbinden von zwei Tabellen über eine gemeinsame Spalte hinausgeht. Sie können verschiedene Arten von SQL-JOINs verwenden, um eine Tabelle mit sich selbst zu verbinden (Self-Join), um Tabellen ohne eine gemeinsame Spalte zu verbinden, um Tabellen mit anderen bedingten Operatoren als Gleichheitsoperatoren zu verbinden (Non-Equi-Joins), um mehrere Tabellen (mehr als zwei) in einer Abfrage zu verbinden oder um Tabellen auf der Grundlage mehrerer Spalten zu verbinden.

Schauen wir uns nun die besten SQL-Praktiken für die Verknüpfung von zwei oder mehr Tabellen an.

5 SQL-JOINs Beste Praktiken

Wenn Sie möchten, dass Ihre SQL-Abfragen klar und lesbar sind - und, was am wichtigsten ist, die erwartete Ausgabe liefern -, müssen Sie bestimmte Praktiken beim Schreiben von SQL-JOINs befolgen.

1. Verwenden Sie die Schlüsselwörter JOIN und ON

Zunächst einmal ist es sehr empfehlenswert, explizite Joins zu verwenden, d. h. die Schlüsselwörter JOIN und ON. Manchmal gibt es SQL-Abfragen, bei denen Tabellen implizit verknüpft werden, indem einfach Tabellennamen in der FROM -Klausel aufgeführt werden und die WHERE -Klausel zur Angabe der Verknüpfungsbedingung verwendet wird.

Die beiden folgenden Abfragen ergeben beispielsweise die gleiche Ausgabe:

SELECT *
FROM customers
JOIN orders
ON customers.id = orders.customer_id;
SELECT *
FROM customers, orders
WHERE customers.id = orders.customer_id;

Allerdings folgt nur die erste dieser Abfragen den bewährten JOIN-Verfahren. Die zweite Abfrage, die die implizite Verknüpfung enthält, hat mehrere Probleme:

  • Sie ist weniger lesbar; dies wird bei komplexen SQL-Abfragen noch schlimmer. Sie müssen genau hinsehen, um die Tabellen zu ermitteln, die verbunden werden. Außerdem müssen Sie die Join-Bedingung finden, der kein Standardschlüsselwort ON vorangestellt ist.
  • Sie können den JOIN-Typ nicht angeben, wenn Sie einen impliziten JOIN verwenden (z. B. FROM customers, orders). Dies kann ein Problem darstellen, wenn Sie etwas anderes als den Standard INNER JOIN verwenden müssen.
  • DieDefinition einer Join-Bedingung in der WHERE-Klausel kann sehr verwirrend sein, da dies nicht die typische Verwendung der Klausel ist. WHERE wird zum Filtern von Daten verwendet; eine Abfrage ist schwer zu verstehen, wenn Join-Bedingungen mit Filterbedingungen in einer Klausel gemischt werden.

Verwenden Sie daher JOIN, um die zu verknüpfenden Tabellen anzugeben, und ON, um die Verknüpfungsbedingung anzugeben.

2. Geeigneten SQL JOIN-Typ wählen

Bevor Sie eine SQL-Abfrage schreiben, sollten Sie sich genau überlegen, welcher Typ von SQL JOIN in diesem speziellen Fall am besten geeignet ist.

Wenn Sie Kunden mit einer Liste von abgeschlossenen Aufträgen verknüpfen, wollen Sie dann Kunden einschließen, die noch keine abgeschlossenen Aufträge haben? Wollen Sie auch Aufträge einbeziehen, die aus irgendeinem Grund nicht die entsprechende Kunden-ID haben? Je nach Ihren Antworten müssen Sie LEFT JOIN, RIGHT JOIN oder sogar FULL JOIN verwenden.

Achten Sie darauf, dass Sie den richtigen SQL JOIN-Typ wählen und die Tabellennamen in der richtigen Reihenfolge angeben, wenn Sie LEFT JOIN oder RIGHT JOIN verwenden.

3. Entwerfen Sie die JOIN-Bedingung sorgfältig

Wenn Sie zwei Tabellen mit ihren jeweiligen Primär- und Fremdschlüsseln verbinden, ist die Verknüpfungsbedingung normalerweise recht einfach. Dies ist jedoch nicht immer der Fall:

  • Eine gemeinsame Spalte identifiziert die Datensätze möglicherweise nicht eindeutig, so dass Sie zwei oder mehr Verknüpfungsbedingungen verwenden müssen. Wenn Sie zum Beispiel mehrere Personen mit demselben Nachnamen in Ihrer Datenbank haben, können Sie nicht nur den Nachnamen verwenden, um Tabellen zu verknüpfen. Dann müssen Sie nach einer anderen Spalte (z. B. ID) oder einer Kombination von Spalten suchen. Hier sehen Sie, wie Sie zwei Tabellen anhand einer Kombination von zwei Spalten (first_name und last_name) in beiden Tabellen verknüpfen können:

    SELECT 
    s.first_name, 
    s.last_name, 
    u.id
    FROM students s
    JOIN users u
    ON s.first_name = u.first_name 
    AND s.last_name = u.last_name;
    
  • Möglicherweise müssen Sie Nicht-Gleichheits-Joins mit bedingten Operatoren jenseits der Gleichheit anwenden. Wenn Sie bei der Verknüpfung von potenziellen Käufern mit zum Verkauf stehenden Häusern überprüfen möchten, ob der Preis eines Hauses innerhalb der Preisvorstellungen der Käufer liegt, würde Ihre Abfrage etwa so aussehen:

    SELECT 
    	b.id, 
    	b.name, 
    	h.id, 
    	h.address, 
    	h.price
    FROM buyers b
    JOIN houses h
    	ON h.price BETWEEN b.min_price AND b.max_price;
    
  • Es kann mehrere entsprechende Datensätze in einer anderen Tabelle geben (z. B. kann ein Kunde viele Bestellungen haben). Möchten Sie alle diese Bestellungen abrufen oder nur die aktuellsten? Wenn Sie nur die jüngste Bestellung abrufen möchten, wird Ihre Abfrage etwas komplexer sein:

    SELECT 
    	customers.id, 
    	customers.first_name, 
    	customers.last_name,
    	orders.order_date, 
    	orders.order_status
    FROM customers
    JOIN orders
        ON orders.id = (
            SELECT TOP 1 id
            FROM orders
            WHERE customer_id = customers.id
            ORDER BY order_date DESC
        )
    ORDER BY customer_id;
    

Die Definition einer korrekten Verknüpfungsbedingung ist entscheidend für die korrekte Ausgabe nach der Verknüpfung von Tabellen in SQL.

4. Tabellenalias verwenden

Es ist eine gute Praxis, Tabellen-Aliase zu verwenden, wenn mehrere Tabellen verbunden werden oder wenn Tabellen mit langen Namen verbunden werden. Normalerweise enthält der Alias einfach den ersten Buchstaben des vollständigen Tabellennamens oder zwei und mehr Buchstaben, wenn der Tabellenname aus mehreren Wörtern besteht (z. B. c für customers, ds für daily_sales, usw.).

Um zu unserem Beispiel zurückzukehren, können wir die folgende Abfrage verwenden, um Informationen über die ID, den Vornamen, den Nachnamen, die Bestell-ID, das Bestelldatum und den Bestellstatus des Kunden zu erhalten:

SELECT
	c.id,
	c.first_name,
	c.last_name,
	o.id,
	o.date,
	o.status
FROM customers c
JOIN orders o
	ON c.id = o.customer_id;

Beachten Sie, dass wir die Tabellenalias in den Klauseln FROM und JOIN direkt nach dem vollständigen Tabellennamen definieren. Anschließend verwenden wir diese Aliasnamen, um in den Anweisungen SELECT und ON auf bestimmte Spalten dieser Tabellen zu verweisen. Dies kann uns eine Menge Schreibarbeit ersparen, besonders wenn die Tabellennamen lang sind.

5. Spaltenalias verwenden

Spalten-Aliase sind die Namen, die wir den Spalten in der Ergebnismenge zuweisen. Standardmäßig haben die Ausgabespalten die gleichen Namen wie die entsprechenden Spalten in den Originaltabellen. Dies führt jedoch oft zu einer verwirrenden Ausgabe.

Die Ausgabe der Abfrage aus unserem obigen Beispiel enthält zum Beispiel zwei Spalten mit dem Namen id, die den Spalten Kunden-ID und Bestell-ID entsprechen.

idfirst_namelast_nameiddatestatus
11KateWhite1112021-10-05Awaiting shipment
12RoseParker1122021-10-05Awaiting payment
13WilliamSpencer1092021-10-04Completed
14JohnSmith1082021-10-04Completed

Sie können die Reihenfolge der Spalten verfolgen, um zu verstehen, welche Spalte welche ist, aber der bessere Ansatz ist die Verwendung von Spaltenaliasen:

SELECT
	c.id AS customer_id, 
	c.first_name, 
	c.last_name, 
	o.id AS order_id, 
	o.date AS order_date, 
	o.status AS order_status.
FROM customers c
JOIN orders o
	ON c.id = o.customer_id;
customer_idfirst_namelast_nameorder_idorder_dateorder_status
11KateWhite1112021-10-05Awaiting shipment
12RoseParker1122021-10-05Awaiting payment
13WilliamSpencer1092021-10-04Completed
14JohnSmith1082021-10-04Completed

Beachten Sie, dass ich auch Spaltenaliase für die Spalten mit Bestelldatum und Bestellstatus verwende. In der resultierenden Tabelle ist nicht klar, worum es sich bei diesen Daten und Status handelt. Um Verwirrung zu vermeiden, ist es besser, die Spaltennamen explizit mit den Spaltenaliasen anzugeben. In diesem Artikel finden Sie weitere Tipps zu SQL JOIN.

Zeit zum Üben SQL-JOINs!

SQL JOIN ist eine der wichtigsten Fertigkeiten, die sich diejenigen aneignen, die anfangen, mit relationalen Datenbanken zu arbeiten. Es geht jedoch um viel mehr als einfache Joins. Es gibt viele fortgeschrittene Tools und Konzepte unter dem Dach von SQL-JOINs , einschließlich verschiedener Arten von Outer-Joins, Self-Joins, Non-Equi-Joins und mehr.

Es ist wichtig, dass Sie die bewährten Methoden von SQL-JOINs von Anfang an kennen und anwenden:

  • Definieren Sie Ihre SQL-JOINs explizit mit den Schlüsselwörtern JOIN und ON.
  • Stellen Sie sicher, dass Sie den richtigen SQL JOIN-Typ auswählen.
  • Entwerfen Sie die Verknüpfungsbedingung sorgfältig.
  • Verwenden Sie Tabellen-Aliase, insbesondere bei langen Tabellennamen.
  • Verwenden Sie Spalten-Aliase, um die Abfrageausgabe verständlicher zu machen.

Interaktive Kurse sind in der Regel die beste Methode, um neu erworbene Kenntnisse zu üben. Wenn Sie sehr neu in SQL sind, empfehle ich Ihnen, mit dem SQL für Anfänger Kurs zu beginnen. Er führt Sie in die wichtigsten SQL-Themen ein, einschließlich SQL-JOINs.

Um ein tieferes Verständnis der verschiedenen JOIN-Typen zu erlangen, lesen Sie den SQL-JOINs Kurs. Er behandelt INNER JOIN, LEFT JOIN, RIGHT JOIN und FULL JOIN, das Filtern von Daten mit verschiedenen Arten von JOINs, das Verbinden einer Tabelle mit sich selbst, das Verbinden von Tabellen über Nicht-Schlüsselspalten und mehr.

Vielen Dank fürs Lesen und viel Spaß beim Lernen!