PostgreSQL Verbindungstypen mit Beispielen: Innen, Außen, Links, Rechts
Was sind Joins? 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 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:
Preis:
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:
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:
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:
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 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 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:
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ück:
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ä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:
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. Machen Sie mit 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
- Klicken Sie in der Navigationsleiste links auf Datenbanken.
- Klicken Sie auf Demo.
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“.
Es sollte Folgendes zurückgeben:
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.
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“.
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 im Abfrageeditor ein:
SELECT * FROM Book NATURAL JOIN Price;
Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.
Es sollte Folgendes zurückgeben:
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.
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“.
Es sollte Folgendes zurückgeben:
pgAdmin Outer Join
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.
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“.
Es sollte Folgendes zurückgeben:
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.
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“.
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 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“.
Es sollte Folgendes zurückgeben:
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