PostgreSQL sammenføjninger: Indre, ydre, venstre, højre, naturlig med eksempler

Indholdsfortegnelse:

Anonim

Hvad er PostgreSQL-tilslutninger?

PostgreSQL JOINs bruges til at hente data fra mere end en tabel. Med JOINs er det muligt for os at kombinere SELECT- og JOIN-udsagnene i en enkelt udsagn. En JOIN-betingelse føjes til erklæringen, og alle rækker, der opfylder betingelserne, returneres.

Værdierne fra forskellige tabeller kombineres baseret på almindelige kolonner. Den fælles kolonne er for det meste en primær nøgle i den første tabel og en fremmed nøgle i den anden tabel.

I denne PostgreSQL-tutorial lærer du:

  • Hvad er PostgreSQL-tilslutninger?
  • Typer af sammenføjninger
  • Indvendige sammenføjninger
    • Theta Deltag
    • EQUI Deltag
    • Naturlig Deltag
  • Ydre sammenføjninger
    • VENSTRE YDRE MEDLEM
    • HØJRE YDRE MEDLEM
    • Fuld ydre tilslutning
  • Brug af pgAdmin
  • Indvendige sammenføjninger
    • Theta Deltag
    • EQUI Deltag
    • Naturlig Deltag
    • INNER JOIN (simpel deltagelse)
  • Ydre sammenføjninger
    • VENSTRE YDRE MEDLEM
    • HØJRE YDRE MEDLEM
    • Fuld ydre tilslutning

Typer af sammenføjninger

Der er to JOIN-typer i PostgreSQL:

  • Indvendige sammenføjninger
  • Ydre tilslutning

Indvendige sammenføjninger

Der er 3 typer indre sammenføjninger:

  • Theta slutter sig
  • Naturlig sammenføjning
  • EQUI deltager

Theta Deltag

En theta-sammenføjning giver mulighed for at deltage i to tabeller baseret på den tilstand, der er repræsenteret af theta. Theta sammenføjninger kan arbejde med alle sammenligningsoperatører. I de fleste tilfælde betegnes theta-sammenføjningen som indre sammenføjning.

Theta-sammenføjningen er den mest basale type JOIN. Det returnerer alle rækker fra tabellerne, hvor JOIN-betingelsen er opfyldt.

Syntaks:

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

Overvej følgende tabeller i demo-databasen:

Bestil:

Pris:

Vi ønsker at se navnet på hver bog og den tilsvarende pris. Vi kan køre følgende kommando:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Dette returnerer følgende:

Kun 3 rækker opfyldte betingelsen for deltagelse.

EQUI Deltag

EQUI-sammenkædningen giver os en måde at sammenføje to tabeller baseret på primærnøgle / fremmed nøgleforhold. For eksempel:

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

Dette returnerer følgende:

Der er returneret poster fra begge tabeller baseret på de almindelige kolonner, det vil sige id-kolonnen.

Naturlig Deltag

Denne type sammenføjning giver os en anden måde at skrive en EQUI-sammenføjning på. Vi kan forbedre vores tidligere eksempel ved at tilføje NATURAL-nøgleordet som vist nedenfor:

SELECT *FROM BookNATURAL JOIN Price;

Dette returnerer følgende:

Der er kun returneret en id-kolonne. NATURAL JOIN var i stand til at bemærke, at id-kolonnen er almindelig i de to tabeller. Kun en blev returneret.

Ydre sammenføjninger

Der er tre typer ydre JOIN'er i PostgreSQL:

  • Venstre ydre samling.
  • Højre ydre samling.
  • Fuld ydre tilslutning

VENSTRE YDRE MEDLEM

VENSTRE OUTER JOIN returnerer alle rækker i tabellen på venstre side og kun rækkerne i højre sidetabel, hvor sammenføjningstilstanden er opfyldt.

Syntaks:

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

Vi skal se navnet på hver bog og den tilsvarende pris. Vi kan køre følgende kommando:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Dette returnerer følgende:

Alle de 4 rækker i bogtabellen er returneret. Kun 3 rækker fra pristabellen opfyldte betingelsen for deltagelse. Derfor blev de returneret. Den sidste bog har ingen tilsvarende prisværdi.

HØJRE YDRE MEDLEM

RIGHT OUTER JOIN returnerer alle rækker i tabellen på højre side og rækker i tabellen på venstre side, hvor sammenføjningstilstanden er opfyldt.

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 rækkerne i pristabellen er returneret. Kun rækkerne i bogtabellen, der opfyldte betingelsen for deltagelse, blev returneret. Den tredje række har ingen værdi for navn, da der ikke blev fundet noget match.

Fuld ydre tilslutning

Denne type JOIN returnerer alle rækker i tabellen på venstre side og alle rækker i tabellen på højre side med nuller, hvor sammenføjningsbetingelsen ikke er opfyldt.

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 rækker fra alle tabeller er returneret med nuller, hvor der ikke blev fundet nogen match.

Brug af pgAdmin

Ovenstående opgaver kan udføres i pgAdmin som følger:

Indvendige sammenføjninger

Theta Deltag

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

EQUI Deltag

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

Naturlig Deltag

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

SELECT *FROM BookNATURAL JOIN Price;

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

INNER JOIN (simpel deltagelse)

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

Ydre sammenføjninger

VENSTRE YDRE MEDLEM

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

HØJRE YDRE MEDLEM

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

Fuld ydre tilslutning

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

Trin 3) Skriv forespørgslen i forespørgselseditoren:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Trin 4) Klik på knappen Udfør.

Den skal returnere følgende:

Resumé:

  • I PostgreSQL bruger vi JOIN'er, når vi har brug for at hente værdier fra mere end en tabel.
  • INNER JOIN er den mest basale type JOIN. Den returnerer alle poster, hvor den angivne JOIN-betingelse var opfyldt.
  • VENSTRE OUTER JOIN returnerer alle rækker i venstre tabel og kun rækkerne i den anden tabel, hvor sammenføjningsbetingelsen er opfyldt.
  • RIGHT OUTER JOIN returnerer alle rækker i højre tabel og kun rækker i den anden tabel, hvor sammenføjningsbetingelsen er opfyldt.
  • Denne type JOIN returnerer alle rækker i venstre tabel og alle rækker i højre tabel med nuller, hvor sammenføjningsbetingelsen ikke er opfyldt.

Download den database, der blev brugt i denne vejledning