PostgreSQL-Verknüpfungen: Inner, Outer, Left, Right, Natural mit Beispielen

Inhaltsverzeichnis:

Anonim

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)

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

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

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

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

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

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

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