PostgreSQL-sammenføyninger: Indre, ytre, venstre, høyre, naturlig med eksempler

Innholdsfortegnelse:

Anonim

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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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)

  1. Fra navigasjonslinjen til venstre - Klikk på Databaser.
  2. 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