Hva er PostgreSQL-sammenkoblinger?
PostgreSQL JOINs brukes til å hente data fra mer enn én tabell. Med JOINs er det mulig for oss å kombinere SELECT- og JOIN-setningene i en enkelt uttalelse. En JOIN-betingelse legges til uttalelsen, og alle rader som oppfyller vilkårene returneres.
Verdiene fra forskjellige tabeller kombineres basert på vanlige kolonner. Den vanlige kolonnen er for det meste en primærnøkkel i den første tabellen og en fremmed nøkkel i den andre tabellen.
I denne PostgreSQL-opplæringen lærer du:
- Hva er PostgreSQL-sammenkoblinger?
- Typer av sammenføyninger
- Indre sammenføyninger
- Theta Bli med
- EQUI Bli med
- Natural Join
- Ytre sammenføyninger
- VENSTRE YTRE MEDLEM
- HØYRE YTRE BLIV MED
- Full ytre sammenføyning
- Bruke pgAdmin
- Indre sammenføyninger
- Theta Bli med
- EQUI Bli med
- Natural Join
- INNER JOIN (enkel sammenføyning)
- Ytre sammenføyninger
- VENSTRE YTRE MEDLEM
- HØYRE YTRE BLIV MED
- Full ytre sammenføyning
Typer av sammenføyninger
Det er to JOIN-typer i PostgreSQL:
- Indre sammenføyninger
- Ytre sammenføyning
Indre sammenføyninger
Det er tre typer indre skjøter:
- Theta blir med
- Naturlig sammenføyning
- EQUI bli med
Theta Bli med
En theta-sammenføyning lar en bli med i to tabeller basert på tilstanden som er representert av theta. Theta blir med kan jobbe med alle sammenligningsoperatører. I de fleste tilfeller blir theta-sammenføyningen referert til som indre sammenføyning.
Theta-sammenføyningen er den mest grunnleggende typen JOIN. Den vil returnere alle rader fra tabellene der JOIN-tilstanden er oppfylt.
Syntaks:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Vurder følgende tabeller i demo-databasen:
Bok:
Pris:
Vi ønsker å se navnet på hver bok og den tilhørende prisen. Vi kan kjøre følgende kommando:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Dette vil returnere følgende:
Bare 3 rader oppfylte tilstanden for å bli med.
EQUI Bli med
EQUI-koblingen gir oss en måte å bli med på to tabeller basert på primærnøkkel / fremmednøkkelforhold. For eksempel:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Dette vil returnere følgende:
Postene er returnert fra begge tabeller basert på de vanlige kolonnene, det vil si id-kolonnen.
Natural Join
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-nøkkelordet som vist nedenfor:
SELECT *FROM BookNATURAL JOIN Price;
Dette vil returnere følgende:
Bare en id-kolonne er returnert. NATURAL JOIN var i stand til å merke seg at id-kolonnen er vanlig i de to tabellene. Bare en ble returnert.
Ytre sammenføyninger
Det er tre typer ytre JOINs i PostgreSQL:
- Venstre ytre skjøt.
- Høyre ytre sammenføyning.
- Full ytre sammenføyning
VENSTRE YTRE MEDLEM
LEFT OUTER JOIN returnerer alle radene i tabellen på venstre side og bare radene i høyre sidetabell der sammenføyningstilstanden er oppfylt.
Syntaks:
SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;
Vi må se navnet på hver bok og den tilhørende prisen. Vi kan kjøre følgende kommando:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Dette returnerer følgende:
Alle de fire radene i boktabellen er returnert. Bare tre rader fra Pris-tabellen oppfylte betingelsen for å bli med. Derfor ble de returnert. Den siste boka har ingen tilsvarende prisverdi.
HØYRE YTRE BLIV MED
RIGHT OUTER JOIN returnerer alle radene i tabellen på høyre side og radene i tabellen på venstre side der sammenføyningstilstanden er oppfylt.
Syntaks:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
For eksempel:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Dette returnerer følgende:
Alle radene i pristabellen er returnert. Bare radene i boktabellen som oppfylte betingelsen for å bli med, ble returnert. Den tredje raden har ingen verdi for navn siden ingen treff ble funnet.
Full ytre sammenføyning
Denne typen JOIN vil returnere alle radene i tabellen på venstre side og alle radene i tabellen på høyre side med null der sammenføyningsbetingelsen ikke er oppfylt.
Syntaks:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
For eksempel:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Dette returnerer følgende:
Alle rader fra alle tabeller er returnert, med null der det ikke ble funnet noe samsvar.
Bruke pgAdmin
Ovennevnte oppgaver kan utføres i pgAdmin som følger:
Indre sammenføyninger
Theta Bli med
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
EQUI Bli med
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
Natural Join
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT *FROM BookNATURAL JOIN Price;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
INNER JOIN (enkel sammenføyning)
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
Ytre sammenføyninger
VENSTRE YTRE MEDLEM
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
HØYRE YTRE BLIV MED
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
Full ytre sammenføyning
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
Sammendrag:
- I PostgreSQL bruker vi JOINs når vi trenger å hente verdier fra mer enn en tabell.
- INNER JOIN er den mest grunnleggende typen JOIN. Den returnerer alle poster der den spesifiserte JOIN-tilstanden ble oppfylt.
- LEFT OUTER JOIN returnerer alle radene i venstre tabell og bare radene i den andre tabellen der sammenkoblingsbetingelsen er oppfylt.
- RIGHT OUTER JOIN returnerer alle radene i høyre tabell og bare rader i den andre tabellen der sammenkoblingsbetingelsen er oppfylt.
- Denne typen JOIN returnerer alle radene i venstre tabell og alle radene i høyre tabell med null der sammenføyningsbetingelsen ikke er oppfylt.
Last ned databasen som brukes i denne veiledningen