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:
Huur:
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:
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:
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:
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:
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:
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:
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
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
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
Het volgende zou moeten worden geretourneerd:
EQUI Doe mee
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
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.
Het volgende zou moeten worden geretourneerd:
Natuurlijk toetreden
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
Stap 3) Typ de query in de query-editor:
SELECT * FROM Book NATURAL JOIN Price;
Stap 4) Klik op de knop Uitvoeren.
Het volgende zou moeten worden geretourneerd:
pgAdmin Eenvoudige innerlijke join
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
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.
Het volgende zou moeten worden geretourneerd:
pgAdmin Outer Join
Linker Outer Join
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
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.
Het volgende zou moeten worden geretourneerd:
Rechts buitenste verbinding
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
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.
Het volgende zou moeten worden geretourneerd:
Volledige Outer Join
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
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.
Het volgende zou moeten worden geretourneerd:
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