Was sind PostgreSQL-Joins?
PostgreSQL-JOINs werden zum Abrufen von Daten aus mehr als einer Tabelle verwendet. Mit JOINs ist es uns möglich, die Anweisungen SELECT und JOIN zu 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 meistens ein Primärschlüssel in der ersten Tabelle und ein Fremdschlüssel in der zweiten Tabelle.
In diesem PostgreSQL-Tutorial lernen Sie:
- Was sind PostgreSQL-Joins?
- Arten von Verknüpfungen
- Innere Verbindungen
- Theta Join
- EQUI Join
- Natürliche Verbindung
- Äußere Verbindungen
- LINKE ÄUSSERE VERBINDUNG
- RIGHT OUTER JOIN
- Vollständige äußere Verbindung
- Verwenden von pgAdmin
- Innere Verbindungen
- Theta Join
- EQUI Join
- Natürliche Verbindung
- INNER JOIN (einfacher Join)
- Äußere Verbindungen
- LINKE ÄUSSERE VERBINDUNG
- RIGHT OUTER JOIN
- Vollständige äußere Verbindung
Arten von Verknüpfungen
In PostgreSQL gibt es zwei JOIN-Typen:
- Innere Verbindungen
- Äußere Verbindung
Innere Verbindungen
Es gibt 3 Arten von inneren Verknüpfungen:
- Theta macht mit
- Natürliche Verbindung
- EQUI-Join
Theta Join
Ein Theta-Join ermöglicht es einem, zwei Tabellen basierend auf der durch Theta dargestellten Bedingung zu verbinden. Theta-Verknüpfungen können mit allen Vergleichsoperatoren verwendet werden. In den meisten Fällen wird die Theta-Verbindung als innere Verbindung bezeichnet.
Der Theta-Join ist der grundlegendste Typ von JOIN. Es werden alle Zeilen aus den Tabellen zurückgegeben, in denen die JOIN-Bedingung erfüllt ist.
Syntax:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Betrachten Sie die folgenden Tabellen der Demo-Datenbank:
Buch:
Preis:
Wir möchten den Namen jedes Buches und den entsprechenden Preis sehen. Wir können den folgenden Befehl ausführen:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Dies gibt Folgendes zurück:
Nur 3 Zeilen erfüllten die Verknüpfungsbedingung.
EQUI Join
Der EQUI-Join bietet uns die Möglichkeit, zwei Tabellen basierend auf der Beziehung zwischen Primärschlüssel und Fremdschlüssel zu verbinden. Zum Beispiel:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Dies gibt Folgendes zurück:
Datensätze wurden aus beiden Tabellen basierend auf den gemeinsamen Spalten, dh der ID-Spalte, zurückgegeben.
Natürliche Verbindung
Diese Art der Verknüpfung bietet uns eine andere Möglichkeit, eine EQUI-Verknüpfung zu schreiben. Wir können unser vorheriges Beispiel verbessern, indem wir das Schlüsselwort NATURAL wie unten gezeigt hinzufügen:
SELECT *FROM BookNATURAL JOIN Price;
Dies gibt Folgendes zurück:
Es wurde nur eine ID-Spalte zurückgegeben. Der NATURAL JOIN konnte feststellen, dass die ID-Spalte in den beiden Tabellen gemeinsam ist. Nur einer wurde zurückgegeben.
Äußere Verbindungen
Es gibt drei Arten von äußeren JOINs in PostgreSQL:
- Linke äußere Verbindung.
- Right Outer Join.
- Vollständige äußere Verbindung
LINKE ÄUSSERE 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 Verknüpfungsbedingung erfüllt wurde.
Syntax:
SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON 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.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Dies gibt Folgendes zurück:
Alle 4 Zeilen in der Buchtabelle wurden zurückgegeben. Nur 3 Zeilen aus der Preistabelle erfüllten die Verknüpfungsbedingung. Daher wurden sie zurückgegeben. Das letzte Buch hat keinen entsprechenden Preiswert.
RIGHT OUTER JOIN
Der RIGHT OUTER JOIN gibt alle Zeilen in der Tabelle auf der rechten Seite und die Zeilen in der Tabelle auf der linken Seite zurück, in denen die Verknüpfungsbedingung erfüllt wurde.
Syntax:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Zum Beispiel:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Dies gibt Folgendes zurück:
Alle Zeilen in der Preistabelle wurden zurückgegeben. Es wurden nur die Zeilen in der Buchtabelle zurückgegeben, die die Verknüpfungsbedingung erfüllten. Die 3 rd Zeile hat keinen Wert für Namen , da keine Übereinstimmung gefunden wurde.
Vollständige äußere Verbindung
Diese Art von JOIN 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 Verknüpfungsbedingung nicht erfüllt ist.
Syntax:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Zum Beispiel:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Dies gibt Folgendes zurück:
Alle Zeilen aus allen Tabellen wurden mit Nullen zurückgegeben, bei denen keine Übereinstimmung gefunden wurde.
Verwenden von pgAdmin
Die oben genannten Aufgaben können in pgAdmin wie folgt ausgeführt werden:
Innere Verbindungen
Theta 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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
EQUI 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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT *FROM BookNATURAL JOIN Price;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
INNER JOIN (einfacher 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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Äußere Verbindungen
LINKE ÄUSSERE 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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
RIGHT OUTER 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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
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.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Zusammenfassung:
- In PostgreSQL verwenden wir JOINs, wenn wir Werte aus mehr als einer Tabelle abrufen müssen.
- Der INNER JOIN ist der grundlegendste Typ von JOIN. 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 ist.
- Der RIGHT OUTER JOIN gibt alle Zeilen in der rechten Tabelle und nur die Zeilen in der anderen Tabelle zurück, in denen die Join-Bedingung erfüllt ist.
- Diese Art von JOIN gibt alle Zeilen in der linken Tabelle und alle Zeilen in der rechten Tabelle mit Nullen zurück, wenn die Verknüpfungsbedingung nicht erfüllt ist.
Laden Sie die in diesem Tutorial verwendete Datenbank herunter