PostgreSQL Verbindingstypen: Binnen, Buiten, Links, Rechts

โšก Slimme samenvatting

PostgreSQL Joins halen rijen uit twee of meer tabellen op en combineren deze met behulp van een gedeelde sleutel. Dit omvat inner joins zoals theta, EQUI en natural, evenals outer joins die links-, rechts- en volledige resultaten opleveren.

  • ๐Ÿ”— Combineren: Een join voegt kolommen uit meerdere tabellen samen op basis van een gemeenschappelijke sleutel.
  • ๐ŸŽฏ Innerlijke verbinding: Inner joins retourneren alleen rijen waar aan de joinvoorwaarde is voldaan.
  • โฌ…๏ธ Links samenvoegen: Bij een LEFT OUTER JOIN worden alle rijen in de linkertabel behouden en worden NULL-waarden toegevoegd voor niet-overeenkomende rijen in de rechtertabel.
  • โžก๏ธ Rechts meedoen: Bij een RIGHT OUTER JOIN worden alle rijen in de rechtertabel behouden en worden NULL-waarden toegevoegd voor niet-overeenkomende rijen in de linkertabel.
  • ๐Ÿ”ต Volledige deelname: FULL OUTER JOIN retourneert alle rijen uit beide tabellen met NULL-waarden waar geen overeenkomst bestaat.
  • ๐Ÿค– AI-hulp: AI-assistenten kiezen het juiste verbindingstype en schrijven de AAN-conditie.

PostgreSQL Sluit je aan bij typen

Wat zijn joins PostgreSQL?

PostgreSQL Sluit zich aan bij Joins worden gebruikt om gegevens uit meerdere tabellen op te halen. Met joins kunnen we de SELECT- en JOIN-instructies combineren tot รฉรฉn enkele instructie. 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 in 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

Prijs:

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.

PostgreSQL buitenste join

Er zijn 3 soorten Outer Joins PostgreSQL:

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

PostgreSQL Linker 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:

PostgreSQL Linker 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.

PostgreSQL Rechts buitenste verbinding

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:

PostgreSQL Rechts buitenste verbinding

Alle rijen in de tabel 'Prijs' zijn geretourneerd. Alleen de rijen in de tabel 'Boek' die aan de koppelingsvoorwaarde voldeden, zijn geretourneerd. De derde 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:

PostgreSQL Volledige Outer 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. In de volgende secties wordt elk type join stap voor stap beschreven.

pgAdmin innerlijke join

De onderstaande stappen laten zien hoe je elke variant van een inner join in pgAdmin kunt uitvoeren.

Hoe Theta te gebruiken Doe mee PostgreSQL met behulp van pgAdmin

Hieronder volgen de stappen om Theta Join te gebruiken. PostgreSQL met behulp van 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.

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)

  • Klik in de navigatiebalk aan de linkerkant op Databases.
  • 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)

  • Klik in de navigatiebalk aan de linkerkant op Databases.
  • 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)

  • Klik in de navigatiebalk aan de linkerkant op Databases.
  • 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

Voer vervolgens de drie outer join-varianten uit in pgAdmin met behulp van de onderstaande stappen.

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.

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)

  • Klik in de navigatiebalk aan de linkerkant op Databases.
  • 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)

  • Klik in de navigatiebalk aan de linkerkant op Databases.
  • 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

Download de database die in deze zelfstudie wordt gebruikt

Veelgestelde vragen

Een INNER JOIN retourneert alleen rijen die in beide tabellen overeenkomen. Een OUTER JOIN behoudt ook niet-overeenkomende rijen, vult ontbrekende kolommen aan met NULL en kan links, rechts of volledig zijn, afhankelijk van welke tabel behouden blijft.

Een JOIN combineert kolommen uit verschillende tabellen naast elkaar met behulp van een overeenkomende sleutel, waarbij elke rij breder wordt gemaakt. Een UNION stapelt de rijen van twee resultaatsets verticaal en vereist hetzelfde aantal kolommen.

Een self-join koppelt een tabel aan zichzelf met behulp van twee tabelaliassen. Dit is handig voor het vergelijken van rijen binnen รฉรฉn tabel, bijvoorbeeld om werknemers te koppelen aan de managers die in dezelfde tabel zijn opgeslagen.

Een CROSS JOIN retourneert het Cartesiaans product, waarbij elke rij van de eerste tabel wordt gekoppeld aan elke rij van de tweede. Het gebruikt geen ON-voorwaarde, waardoor het snel zeer grote resultaten kan opleveren.

Ja. Je kunt meerdere JOIN-clausules in รฉรฉn query combineren, waarbij je elke extra tabel toevoegt met een aparte JOIN- en ON-voorwaarde. PostgreSQL evalueert ze om tot รฉรฉn gecombineerde resultatenset te komen.

AI-assistenten zoals GitHub Copilot suggereren het juiste join-type, schrijven de ON-conditie af uit foreign keys en signaleren een ontbrekende conditie die een onbedoeld cartesisch product zou veroorzaken, waardoor veelvoorkomende join-fouten worden verminderd.

Ja. AI-assistenten kunnen een queryplan lezen, indexen aanbevelen voor join-kolommen en de joinvolgorde of -voorwaarden herschrijven. De database blijft echter de correctheid bewaken, dus controleer elke suggestie voordat u deze in productie uitvoert.

Geen enkele join is altijd de snelste; de โ€‹โ€‹prestaties hangen af โ€‹โ€‹van indexen, het aantal rijen en filters. INNER JOINs op geรฏndexeerde sleutels zijn meestal efficiรซnt, terwijl FULL OUTER JOINs op grote, niet-geรฏndexeerde tabellen doorgaans het meest kostbaar zijn.

Vat dit bericht samen met: