PostgreSQL-Join-Typen mit Beispielen: Inner, Outer, Left, Right

Was sind Joins in PostgreSQL?

PostgreSQL-Joins werden zum Abrufen von Daten aus mehr als einer Tabelle verwendet. Mit Joins ist es uns möglich, die SELECT- und JOIN-Anweisungen in einer einzigen Anweisung zu kombinieren. Der Anweisung wird eine JOIN-Bedingung hinzugefügt und alle Zeilen, die die Bedingungen erfüllen, werden zurückgegeben. Die Werte aus verschiedenen Tabellen werden basierend auf gemeinsamen Spalten kombiniert. Die gemeinsame Spalte ist meist ein Primärschlüssel in der ersten Tabelle und ein Fremdschlüssel der zweiten Tabelle.

PostgreSQL-Join-Typen

Es gibt zwei Arten von Joins in PostgreSQL:

  • Innere Verbindungen
  • Äußere Verbindungen

Innerer PostgreSQL-Join

Es gibt drei Arten von Inner Joins in PostgreSQL:

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

Theta Join

Ein Theta-Join ermöglicht es, zwei Tabellen basierend auf der durch Theta dargestellten Bedingung zu verknüpfen. Theta-Joins können mit allen Vergleichsoperatoren funktionieren. In den meisten Fällen wird der Theta-Join als Inner-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 Folgendeswing 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 Folgendes ausführenwing Befehl:

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

Dies wird Folgendes zurückgebenwing:

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 wird Folgendes zurückgebenwing:

PostgreSQL EQUI-Beitritt

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 wird Folgendes zurückgebenwing:

PostgreSQL Natural Join

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.

Postgres Outer Join

Es gibt drei Arten von Outer Joins in PostgreSQL:

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

Linker äußerer Join von Postgres

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 Buchs und den entsprechenden Preis sehen. Wir können Folgendes ausführenwing Befehl:

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

Dies gibt Folgendes zurückwing:

Linker äußerer Join von Postgres

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.

Postgres Right Outer Join

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ückwing:

Postgres Right Outer Join

Alle Zeilen in der Preistabelle wurden zurückgegeben. Es wurden nur die Zeilen in der Book-Tabelle zurückgegeben, die die Join-Bedingung erfüllten. Die 3rd Die Zeile hat keinen Wert für den Namen, da keine Übereinstimmung gefunden wurde.

Vollständiger Outer Join in 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ückwing:

Postgres Full Outer Join

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

Verwenden von pgAdmin

Die oben genannten Aufgaben können in pgAdmin wie folgt ausgeführt werden:

pgAdmin Inner Join

So verwenden Sie Theta Join in PostgreSQL mit pgAdmin

Nachfolgend finden Sie die Schritte zur Verwendung von Theta Join in Postgres 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

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin Inner Join

EQUI beitreten

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

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin EQUI Beitreten

Natürliche Verbindung

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

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin Natural Join

pgAdmin Einfacher innerer Join

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

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin Einfacher innerer Join

pgAdmin Outer Join

Linke äußere Verbindung

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

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin hat den äußeren Join verlassen

Rechte äußere Verknüpfung

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

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin Right Outer Join

Vollständige äußere Verbindung

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

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. 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ückgebenwing:

pgAdmin Vollständiger äußerer Join

Zusammenfassung

  • In PostgreSQLverwenden wir JOINs, wenn wir Werte aus mehr als einer Tabelle abrufen müssen.
  • Der INNER JOIN ist der grundlegendste JOIN-Typ. Es werden alle Datensätze zurückgegeben, bei denen die angegebene JOIN-Bedingung erfüllt war.
  • Der LEFT OUTER JOIN gibt alle Zeilen in der linken Tabelle und nur die Zeilen in der anderen Tabelle zurück, in denen die Join-Bedingung erfüllt wurde.
  • Der RIGHT OUTER JOIN gibt alle Zeilen in der rechten Tabelle und nur Zeilen in der anderen Tabelle zurück, in denen die Join-Bedingung erfüllt wurde.
  • Dieser JOIN-Typ gibt alle Zeilen in der linken Tabelle und alle Zeilen in der rechten Tabelle mit Nullen zurück, wenn die Join-Bedingung nicht erfüllt ist.

Laden Sie die in diesem Tutorial verwendete Datenbank herunter