PostgreSQL Verbindungstypen: Inner, Outer, Left, Right

⚡ Intelligente Zusammenfassung

PostgreSQL Joins rufen Zeilen aus zwei oder mehr Tabellen mithilfe eines gemeinsamen Schlüssels ab und kombinieren diese. Dazu gehören innere Joins wie Theta, EQUI und Natural sowie äußere Joins, die linke, rechte und vollständige Ergebnisse abdecken.

  • 🔗 Kombinieren: Joins führen Spalten aus mehreren Tabellen anhand eines gemeinsamen Schlüssels zusammen.
  • 🎯 Innere Verbindung: Inner Joins geben nur Zeilen zurück, in denen die Join-Bedingung erfüllt ist.
  • ⬅️ Links beitreten: LEFT OUTER JOIN behält alle Zeilen der linken Tabelle bei und fügt NULL-Werte für nicht übereinstimmende Zeilen der rechten Tabelle hinzu.
  • ➡️ Rechtes Verbinden: RIGHT OUTER JOIN behält alle Zeilen der rechten Tabelle bei und fügt NULL-Werte für nicht übereinstimmende Zeilen der linken Tabelle hinzu.
  • ???? Vollständiger Beitritt: FULL OUTER JOIN gibt alle Zeilen beider Tabellen mit NULL-Werten zurück, wenn keine Übereinstimmung existiert.
  • 🤖 KI-Hilfe: KI-Assistenten wählen den richtigen Join-Typ aus und schreiben die ON-Bedingung.

PostgreSQL Join-Typen

Was sind Joins? PostgreSQL?

PostgreSQL Joins Joins dienen dem Abrufen von Daten aus mehreren Tabellen. Mit Joins lassen sich SELECT- und JOIN-Anweisungen in einer einzigen Anweisung kombinieren. Der Anweisung wird eine JOIN-Bedingung hinzugefügt, und alle Zeilen, die diese Bedingung erfüllen, werden zurückgegeben. Die Werte aus verschiedenen Tabellen werden anhand gemeinsamer Spalten zusammengeführt. Diese gemeinsame Spalte ist meist ein Primärschlüssel der ersten Tabelle und ein Fremdschlüssel der zweiten Tabelle.

PostgreSQL Join-Typen

Es gibt zwei Arten von Joins PostgreSQL:

  • Innere Verbindungen
  • Äußere Verbindungen

PostgreSQL Innerer Beitritt

Es gibt drei Arten von Inner Joins PostgreSQL:

  • Theta macht mit
  • Natürliche Verbindung
  • EQUI beitreten

Theta Join

Mit einem Theta-Join können zwei Tabellen basierend auf der durch Theta dargestellten Bedingung verknüpft werden. Theta-Joins können mit allen Vergleichsoperatoren verwendet werden. In den meisten Fällen wird der Theta-Join als innerer Join bezeichnet.

Der Theta-Join ist die einfachste Art von JOIN. Es werden alle Zeilen aus den Tabellen zurückgegeben, in denen die JOIN-Bedingung erfüllt ist.

Syntax:

SELECT columns
FROM table-1
INNER JOIN table-2
ON table-1.column = table-2.column;

Betrachten Sie die folgenden Tabellen der Demo-Datenbank:

Buch:

PostgreSQL Theta Join

Preis:

PostgreSQL Theta Join

Wir möchten den Namen jedes Buchs und den entsprechenden Preis sehen. Wir können den folgenden Befehl ausführen:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Dies gibt Folgendes zurück:

PostgreSQL Theta Join

Nur 3 Zeilen erfüllten die Join-Bedingung.

EQUI beitreten

Der EQUI-Join bietet uns eine Möglichkeit, zwei Tabellen basierend auf der Primärschlüssel-/Fremdschlüsselbeziehung zu verbinden. Zum Beispiel:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Dies gibt Folgendes zurück:

PostgreSQL EQUI beitreten

Von beiden Tabellen wurden Datensätze basierend auf den gemeinsamen Spalten, d. h. der ID-Spalte, zurückgegeben.

Natürliche Verbindung

Diese Art von Join bietet uns eine weitere Möglichkeit, einen EQUI-Join zu schreiben. Wir können unser vorheriges Beispiel verbessern, indem wir das Schlüsselwort NATURAL hinzufügen, wie unten gezeigt:

SELECT *
FROM Book
NATURAL JOIN Price;

Dies gibt Folgendes zurück:

PostgreSQL Natürliche Verbindung

Es wurde nur eine ID-Spalte zurückgegeben. Der NATURAL JOIN konnte feststellen, dass die ID-Spalte in beiden Tabellen gemeinsam ist. Nur einer wurde zurückgegeben.

PostgreSQL Äußere Verbindung

Es gibt drei Arten von Outer Joins PostgreSQL:

  • Linke äußere Verbindung
  • Rechte äußere Verknüpfung
  • Vollständige äußere Verbindung

PostgreSQL Linke äußere Verbindung

Der LEFT OUTER JOIN gibt alle Zeilen in der Tabelle auf der linken Seite und nur die Zeilen in der Tabelle auf der rechten Seite zurück, in denen die Join-Bedingung erfüllt wurde.

Syntax:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON table-1.column = table-2.column;

Wir müssen den Namen jedes Buches und den entsprechenden Preis sehen. Wir können den folgenden Befehl ausführen:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Dies gibt Folgendes zurück:

PostgreSQL Linke äußere Verbindung

Alle 4 Zeilen in der Book-Tabelle wurden zurückgegeben. Nur 3 Zeilen aus der Preistabelle erfüllten die Join-Bedingung. Daher wurden sie zurückgegeben. Das letzte Buch hat keinen entsprechenden Preiswert.

PostgreSQL Rechte äußere Verknüpfung

Der RIGHT OUTER JOIN gibt alle Zeilen in der Tabelle auf der rechten Seite und Zeilen in der Tabelle auf der linken Seite zurück, in denen die Join-Bedingung erfüllt wurde.

Syntax:

SELECT columns
FROM table-1
RIGHT OUTER JOIN table-2
ON table-1.column = table-2.column;

Beispielsweise:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Dies gibt Folgendes zurück:

PostgreSQL Rechte äußere Verknüpfung

Alle Zeilen der Tabelle „Preis“ wurden zurückgegeben. Nur die Zeilen der Tabelle „Buch“, die die Verknüpfungsbedingung erfüllten, wurden zurückgegeben. Die dritte Zeile enthält keinen Wert für „Name“, da keine Übereinstimmung gefunden wurde.

Vollständiges äußeres Mitmachen PostgreSQL

Dieser JOIN-Typ gibt alle Zeilen in der Tabelle auf der linken Seite und alle Zeilen in der Tabelle auf der rechten Seite mit Nullen zurück, wenn die Join-Bedingung nicht erfüllt ist.

Syntax:

SELECT columns
FROM table-1
FULL OUTER JOIN table-2
ON table-1.column = table-2.column;

Beispielsweise:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Dies gibt Folgendes zurück:

PostgreSQL Vollständige äußere Verbindung

Alle Zeilen aus allen Tabellen wurden zurückgegeben, mit Nullen, wenn keine Übereinstimmung gefunden wurde.

Verwenden von pgAdmin

Die oben genannten Aufgaben lassen sich in pgAdmin wie folgt erledigen. In den folgenden Abschnitten wird jeder Join-Typ Schritt für Schritt erläutert.

pgAdmin Inner Join

Die folgenden Schritte zeigen, wie die einzelnen Inner Join-Varianten in pgAdmin ausgeführt werden.

So verwenden Sie Theta. Machen Sie mit PostgreSQL mit pgAdmin

Nachfolgend sind die Schritte zur Verwendung von Theta Join aufgeführt. PostgreSQL mit pgAdmin:

Schritt 1) ​​Melden Sie sich bei Ihrem pgAdmin-Konto an

Öffnen Sie pgAdmin und melden Sie sich mit Ihren Anmeldeinformationen an

Schritt 2) Demodatenbank erstellen

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin Inner Join

Schritt 3) Geben Sie die Abfrage ein

Geben Sie die folgende Abfrage in den Abfrageeditor ein:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Schritt 4) Führen Sie die Abfrage aus

Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin Inner Join

Es sollte Folgendes zurückgeben:

pgAdmin Inner Join

EQUI beitreten

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin EQUI Beitreten

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin EQUI Beitreten

Es sollte Folgendes zurückgeben:

pgAdmin EQUI Beitreten

Natürliche Verbindung

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin Natural Join

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

SELECT *
FROM Book
NATURAL JOIN Price;

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin Natural Join

Es sollte Folgendes zurückgeben:

pgAdmin Natural Join

pgAdmin Einfacher innerer Join

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin Einfacher innerer Join

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin Einfacher innerer Join

Es sollte Folgendes zurückgeben:

pgAdmin Einfacher innerer Join

pgAdmin Outer Join

Führen Sie anschließend die drei Varianten des Outer Joins in pgAdmin anhand der folgenden Schritte aus.

Linke äußere Verbindung

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin hat den äußeren Join verlassen

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin hat den äußeren Join verlassen

Es sollte Folgendes zurückgeben:

pgAdmin hat den äußeren Join verlassen

Rechte äußere Verknüpfung

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin Right Outer Join

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin Right Outer Join

Es sollte Folgendes zurückgeben:

pgAdmin Right Outer Join

Vollständige äußere Verbindung

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  • Klicken Sie in der Navigationsleiste links auf Datenbanken.
  • Klicken Sie auf Demo.

pgAdmin Vollständiger äußerer Join

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

pgAdmin Vollständiger äußerer Join

Es sollte Folgendes zurückgeben:

pgAdmin Vollständiger äußerer Join

Laden Sie die in diesem Tutorial verwendete Datenbank herunter

Häufig gestellte Fragen

Ein INNER JOIN gibt nur die Zeilen zurück, die in beiden Tabellen übereinstimmen. Ein OUTER JOIN behält ebenfalls nicht übereinstimmende Zeilen bei, indem er fehlende Spalten mit NULL auffüllt, und kann je nach der zu berücksichtigenden Tabelle als LEFT JOIN, RIGHT JOIN oder FULL JOIN ausgeführt werden.

Ein JOIN verknüpft Spalten aus verschiedenen Tabellen nebeneinander mithilfe eines übereinstimmenden Schlüssels und erweitert dabei jede Zeile. Ein UNION stapelt die Zeilen zweier Ergebnismengen vertikal und benötigt die gleiche Anzahl an Spalten.

Ein Self-Join verknüpft eine Tabelle mit sich selbst mithilfe zweier Tabellenaliase. Er ist nützlich, um Zeilen innerhalb einer Tabelle zu vergleichen, beispielsweise um Mitarbeiter den in derselben Tabelle gespeicherten Managern zuzuordnen.

Ein CROSS JOIN liefert das kartesische Produkt, indem er jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle verknüpft. Da er keine ON-Bedingung verwendet, kann er sehr große Ergebnismengen schnell erzeugen.

Ja. Sie können mehrere JOIN-Klauseln in einer Abfrage verketten, indem Sie jede zusätzliche Tabelle mit einer weiteren JOIN-Klausel und einer ON-Bedingung hinzufügen. PostgreSQL wertet sie aus, um ein einziges kombiniertes Ergebnis-Set zu erstellen.

KI-Assistenten wie GitHub Copilot schlagen den richtigen Join-Typ vor, schreiben die ON-Bedingung aus Fremdschlüsseln und kennzeichnen fehlende Bedingungen, die zu einem versehentlichen kartesischen Produkt führen würden, wodurch häufige Join-Fehler reduziert werden.

Ja. KI-Assistenten können Abfragepläne lesen, Indizes für Join-Spalten empfehlen und die Join-Reihenfolge oder -Bedingungen anpassen. Die Datenbank stellt weiterhin die Korrektheit sicher. Überprüfen Sie daher jeden Vorschlag, bevor Sie ihn in der Produktionsumgebung ausführen.

Es gibt keine allgemeingültige Join-Methode; die Performance hängt von Indizes, Zeilenanzahl und Filtern ab. INNER JOINs mit indizierten Schlüsseln sind in der Regel effizient, während FULL OUTER JOINs mit großen, nicht indizierten Tabellen tendenziell am aufwändigsten sind.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: