PostgreSQL Slå sammen typer med eksempler: indre, ytre, venstre, høyre

Hva er slutter seg til PostgreSQL?

PostgreSQL tiltrer brukes til å hente data fra mer enn én tabell. Med Joins er det mulig for oss å kombinere SELECT- og JOIN-setningene til en enkelt setning. En JOIN-betingelse legges til setningen, og alle rader som oppfyller betingelsene returneres. Verdiene fra ulike tabeller er kombinert basert på vanlige kolonner. Den vanlige kolonnen er for det meste en primærnøkkel i den første tabellen og en fremmednøkkel i den andre tabellen.

PostgreSQL Bli med typer

Det finnes to typer Joins in PostgreSQL:

  • Indre sammenføyninger
  • Ytre skjøter

PostgreSQL Indre sammenføyning

Det er 3 typer Inner Joins in PostgreSQL:

  • Theta bli med
  • Naturlig sammenføyning
  • EQUI bli med

Theta Bli med

En theta-sammenføyning lar en slå sammen to tabeller basert på tilstanden som er representert av theta. Theta joins kan fungere med alle sammenligningsoperatører. I de fleste tilfeller blir theta-sammenføyningen referert til som indre sammenføyning.

Theta join er den mest grunnleggende typen JOIN. Den vil returnere alle rader fra tabellene der JOIN-betingelsen er oppfylt.

Syntaks:

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

Tenk på følgende tabeller i demodatabasen:

Bok:

PostgreSQL Theta Bli med

Pris:

PostgreSQL Theta Bli med

Vi ønsker å se navnet på hver bok og den tilsvarende prisen. Vi kan kjøre følgende kommando:

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

Dette vil returnere følgende:

PostgreSQL Theta Bli med

Kun 3 rader oppfylte sammenføyningsbetingelsen.

EQUI Bli med

EQUI-koblingen gir oss en måte å slå sammen to tabeller basert på primærnøkkel/fremmednøkkelforhold. For eksempel:

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

Dette vil returnere følgende:

PostgreSQL EQUI Bli med

Poster har blitt returnert fra begge tabellene basert på de vanlige kolonnene, det vil si id-kolonnen.

Naturlig Bli med

Denne typen sammenføyning gir oss en annen måte å skrive en EQUI sammenføyning på. Vi kan forbedre vårt forrige eksempel ved å legge til NATURAL-søkeordet som vist nedenfor:

SELECT *
FROM Book
NATURAL JOIN Price;

Dette vil returnere følgende:

PostgreSQL Naturlig Bli med

Bare én id-kolonne har blitt returnert. NATURAL JOIN kunne merke seg at id-kolonnen er vanlig i de to tabellene. Bare én ble returnert.

Postgres Ytre Join

Det er 3 typer ytre sammenføyninger PostgreSQL:

  • Venstre ytre skjøt
  • Høyre ytre skjøt
  • Full ytre sammenføyning

Postgres Venstre Ytre Join

LEFT OUTER JOIN vil returnere alle rader i tabellen på venstre side og bare radene i høyre sidetabell der sammenføyningsbetingelsen er oppfylt.

Syntaks:

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

Vi må se navnet på hver bok og den tilsvarende prisen. Vi kan kjøre følgende kommando:

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

Dette returnerer følgende:

Postgres Venstre Ytre Join

Alle de 4 radene i boktabellen er returnert. Bare 3 rader fra pristabellen oppfylte sammenføyningsbetingelsen. Derfor ble de returnert. Den siste boken har ingen tilsvarende prisverdi.

Postgres Høyre Ytre Join

RIGHT YTRE JOIN returnerer alle rader i tabellen på høyre side og rader i tabellen på venstre side der sammenføyningsbetingelsen er oppfylt.

Syntaks:

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

For eksempel:

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

Dette returnerer følgende:

Postgres Høyre Ytre Join

Alle radene i Pristabellen er returnert. Bare radene i boktabellen som oppfylte sammenføyningsbetingelsen ble returnert. Den 3rd rad har ingen verdi for navn siden ingen treff ble funnet.

Full Ytre Bli med PostgreSQL

Denne typen JOIN vil returnere alle rader i tabellen på venstre side og alle rader i tabellen på høyre side med null der sammenføyningsbetingelsen ikke er oppfylt.

Syntaks:

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

For eksempel:

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

Dette returnerer følgende:

Postgres Full Ytre Join

Alle rader fra alle tabeller er returnert, med nullverdier der ingen treff ble funnet.

Bruker pgAdmin

Oppgavene ovenfor kan utføres i pgAdmin som følger:

pgAdmin Inner Join

Slik bruker du Theta Bli med PostgreSQL ved å bruke pgAdmin

Nedenfor er trinnene for å bruke Theta Join i Postgres ved å bruke pgAdmin:

Trinn 1) Logg på pgAdmin-kontoen din

Åpne pgAdmin og logg på med legitimasjonen din

Trinn 2) Opprett demodatabase

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin Inner Join

Trinn 3) Skriv inn søket

Skriv inn søket nedenfor i spørringsredigeringsprogrammet:

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

Trinn 4) Utfør spørringen

Klikk på Utfør-knappen

pgAdmin Inner Join

Den skal returnere følgende:

pgAdmin Inner Join

EQUI Bli med

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin EQUI Bli med

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

pgAdmin EQUI Bli med

Den skal returnere følgende:

pgAdmin EQUI Bli med

Naturlig Bli med

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin Naturlig Bli med

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

SELECT *
FROM Book 
NATURAL JOIN Price;

Trinn 4) Klikk på Utfør-knappen.

pgAdmin Naturlig Bli med

Den skal returnere følgende:

pgAdmin Naturlig Bli med

pgAdmin Enkel indre deltakelse

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin Enkel indre deltakelse

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

pgAdmin Enkel indre deltakelse

Den skal returnere følgende:

pgAdmin Enkel indre deltakelse

pgAdmin Outer Join

Venstre ytre skjøt

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin Venstre Ytre Join

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

pgAdmin Venstre Ytre Join

Den skal returnere følgende:

pgAdmin Venstre Ytre Join

Høyre ytre skjøt

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin Høyre Ytre Join

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

pgAdmin Høyre Ytre Join

Den skal returnere følgende:

pgAdmin Høyre Ytre Join

Full ytre sammenføyning

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

pgAdmin Full Outer Join

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

pgAdmin Full Outer Join

Den skal returnere følgende:

pgAdmin Full Outer Join

Oppsummering

  • In PostgreSQL, bruker vi JOINs når vi trenger å hente verdier fra mer enn én tabell.
  • INNER JOIN er den mest grunnleggende typen JOIN. Den returnerer alle poster der den angitte JOIN-betingelsen var oppfylt.
  • LEFT OUTER JOIN returnerer alle rader i den venstre tabellen og bare radene i den andre tabellen der sammenføyningsbetingelsen er oppfylt.
  • RIGHT OUTER JOIN returnerer alle rader i den høyre tabellen og bare rader i den andre tabellen der sammenføyningsbetingelsen er oppfylt.
  • Denne typen JOIN returnerer alle rader i venstre tabell og alle rader i høyre tabell med null der sammenføyningsbetingelsen ikke er oppfylt.

Last ned databasen som brukes i denne opplæringen