PostgreSQL Verbindingstypen met voorbeelden: Binnen, Buiten, Links, Rechts

Wat zijn joins PostgreSQL?

PostgreSQL Sluit zich aan bij worden gebruikt voor het ophalen van gegevens uit meer dan één tabel. Met Joins is het voor ons mogelijk om de SELECT- en JOIN-statements in één statement te combineren. Er wordt een JOIN-voorwaarde aan de instructie toegevoegd en alle rijen die aan de voorwaarden voldoen, worden geretourneerd. De waarden uit verschillende tabellen worden gecombineerd op basis van gemeenschappelijke kolommen. De gemeenschappelijke kolom is meestal een primaire sleutel in de eerste tabel en een externe sleutel van de tweede tabel.

PostgreSQL Sluit je aan bij typen

Er zijn twee soorten joins PostgreSQL:

  • Innerlijke sluit zich aan
  • buitenste joins

PostgreSQL Innerlijke verbinding

Er zijn 3 soorten Inner Joins PostgreSQL:

  • Theta sluit zich aan
  • Natuurlijk meedoen
  • EQUI sluit zich aan

Theta Doe mee

Met een theta join kunt u twee tabellen joinen op basis van de voorwaarde die door theta wordt gerepresenteerd. Theta joins kunnen met alle vergelijkingsoperatoren werken. In de meeste gevallen wordt de theta join inner join genoemd.

De theta join is het meest basale type JOIN. Het retourneert alle rijen uit de tabellen waarin aan de JOIN-voorwaarde is voldaan.

Syntax:

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

Bekijk de volgende tabellen van de demodatabase:

Boek:

PostgreSQL Theta Doe mee

Huur:

PostgreSQL Theta Doe mee

We willen de naam van elk boek en de bijbehorende prijs zien. We kunnen de volgende opdracht uitvoeren:

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

Dit retourneert het volgende:

PostgreSQL Theta Doe mee

Slechts 3 rijen voldeden aan de voorwaarde voor samenvoegen.

EQUI Doe mee

De EQUI-join biedt ons een manier om twee tabellen samen te voegen op basis van de relatie tussen primaire sleutel en buitenlandse sleutel. Bijvoorbeeld:

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

Dit retourneert het volgende:

PostgreSQL EQUI Doe mee

Er zijn records uit beide tabellen geretourneerd op basis van de gemeenschappelijke kolommen, dat wil zeggen de id-kolom.

Natuurlijk toetreden

Dit type join biedt ons een andere manier om een ​​EQUI-join te schrijven. We kunnen ons vorige voorbeeld verbeteren door het trefwoord NATURAL toe te voegen, zoals hieronder weergegeven:

SELECT *
FROM Book
NATURAL JOIN Price;

Dit retourneert het volgende:

PostgreSQL Natuurlijk toetreden

Er is slechts één ID-kolom geretourneerd. De NATURAL JOIN kon opmerken dat de id-kolom gebruikelijk is in de twee tabellen. Er werd er slechts één teruggestuurd.

Postgres buitenste join

Er zijn 3 soorten Outer Joins PostgreSQL:

  • Linker Outer Join
  • Rechts buitenste verbinding
  • Volledige Outer Join

Postgres Left Outer Join

De LEFT OUTER JOIN retourneert alle rijen in de tabel aan de linkerkant en alleen de rijen in de rechterzijtabel waar aan de join-voorwaarde is voldaan.

Syntax:

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

We moeten de naam van elk boek en de bijbehorende prijs zien. We kunnen de volgende opdracht uitvoeren:

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

Dit geeft het volgende terug:

Postgres Left Outer Join

Alle 4 rijen in de Boekentabel zijn teruggegeven. Slechts 3 rijen uit de prijstabel voldeden aan de voorwaarde voor deelname. Daarom werden ze teruggestuurd. Het laatste boek heeft geen overeenkomstige prijswaarde.

Postgres Right Outer Join

De RIGHT OUTER JOIN retourneert alle rijen in de tabel aan de rechterkant en rijen in de tabel aan de linkerkant waar aan de join-voorwaarde is voldaan.

Syntax:

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

Bijvoorbeeld:

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

Dit geeft het volgende terug:

Postgres Right Outer Join

Alle rijen in de prijstabel zijn geretourneerd. Alleen de rijen in de Boek-tabel die aan de join-voorwaarde voldeden, werden geretourneerd. De 3rd rij heeft geen waarde voor naam omdat er geen overeenkomst is gevonden.

Volledige buitenste deelname PostgreSQL

Dit type JOIN retourneert alle rijen in de tabel aan de linkerkant en alle rijen in de tabel aan de rechterkant met nullen waar niet aan de join-voorwaarde is voldaan.

Syntax:

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

Bijvoorbeeld:

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

Dit geeft het volgende terug:

Postgres volledige buitenste join

Alle rijen uit alle tabellen zijn geretourneerd, met nullen waar geen overeenkomst is gevonden.

Gebruik pgAdmin

De bovenstaande taken kunnen als volgt in pgAdmin worden uitgevoerd:

pgAdmin innerlijke join

Hoe Theta te gebruiken Doe mee PostgreSQL met behulp van pgAdmin

Hieronder staan ​​de stappen om Theta Join in Postgres te gebruiken met pgAdmin:

Stap 1) Log in op uw pgAdmin-account

Open pgAdmin en log in met uw inloggegevens

Stap 2) Maak een demodatabase

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin innerlijke join

Stap 3) Typ de zoekopdracht

Typ de onderstaande query in de query-editor:

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

Stap 4) Voer de query uit

Klik op de knop Uitvoeren

pgAdmin innerlijke join

Het volgende zou moeten worden geretourneerd:

pgAdmin innerlijke join

EQUI Doe mee

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin EQUI Doe mee

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

pgAdmin EQUI Doe mee

Het volgende zou moeten worden geretourneerd:

pgAdmin EQUI Doe mee

Natuurlijk toetreden

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin Natuurlijke deelname

Stap 3) Typ de query in de query-editor:

SELECT *
FROM Book 
NATURAL JOIN Price;

Stap 4) Klik op de knop Uitvoeren.

pgAdmin Natuurlijke deelname

Het volgende zou moeten worden geretourneerd:

pgAdmin Natuurlijke deelname

pgAdmin Eenvoudige innerlijke join

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin Eenvoudige innerlijke join

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

pgAdmin Eenvoudige innerlijke join

Het volgende zou moeten worden geretourneerd:

pgAdmin Eenvoudige innerlijke join

pgAdmin Outer Join

Linker Outer Join

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin Left Outer Join

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

pgAdmin Left Outer Join

Het volgende zou moeten worden geretourneerd:

pgAdmin Left Outer Join

Rechts buitenste verbinding

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin Right Outer Join

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

pgAdmin Right Outer Join

Het volgende zou moeten worden geretourneerd:

pgAdmin Right Outer Join

Volledige Outer Join

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

pgAdmin Volledige buitenste join

Stap 3) Typ de query in de query-editor:

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

Stap 4) Klik op de knop Uitvoeren.

pgAdmin Volledige buitenste join

Het volgende zou moeten worden geretourneerd:

pgAdmin Volledige buitenste join

Samenvatting

  • In PostgreSQL, gebruiken we JOINs wanneer we waarden uit meer dan één tabel moeten ophalen.
  • De INNER JOIN is het meest basale type JOIN. Het retourneert alle records waarin aan de opgegeven JOIN-voorwaarde is voldaan.
  • De LEFT OUTER JOIN retourneert alle rijen in de linkertabel en alleen de rijen in de andere tabel waar aan de join-voorwaarde is voldaan.
  • De RIGHT OUTER JOIN retourneert alle rijen in de rechtertabel en alleen rijen in de andere tabel waar aan de join-voorwaarde is voldaan.
  • Dit type JOIN retourneert alle rijen in de linkertabel en alle rijen in de rechtertabel met nullen waarbij niet aan de join-voorwaarde is voldaan.

Download de database die in deze zelfstudie wordt gebruikt