PostgreSQL liitub: sisemine, välimine, vasak, parem, loomulik koos näidetega

Lang L: none (table-of-contents):

Anonim

Mis on PostgreSQL liitumised?

PostgreSQL JOIN-e kasutatakse andmete hankimiseks rohkem kui ühest tabelist. JOIN-ide abil on meil võimalik SELECT ja JOIN laused ühendada üheks avalduseks. Avaldusele lisatakse tingimus JOIN ja kõik tingimustele vastavad read tagastatakse.

Erinevate tabelite väärtused kombineeritakse ühiste veergude põhjal. Ühine veerg on enamasti esimese tabeli esmane võti ja teise tabeli võõras võti.

Selles PostgreSQL-i õpetuses saate teada:

  • Mis on PostgreSQL liitumised?
  • Liitumiste tüübid
  • Sisemine liitumine
    • Theta Liitu
    • EQUI Liitu
    • Loomulik liitumine
  • Välised liitumised
    • VASEM VÄLIS LIITUMINE
    • PAREM VÄLIS LIITUMINE
    • Täielik väline liitumine
  • PgAdmini kasutamine
  • Sisemine liitumine
    • Theta Liitu
    • EQUI Liitu
    • Loomulik liitumine
    • INNER JOIN (lihtne liitumine)
  • Välised liitumised
    • VASEM VÄLIS LIITUMINE
    • PAREM VÄLIS LIITUMINE
    • Täielik väline liitumine

Liitumiste tüübid

PostgreSQL-is on kaks JOIN-tüüpi:

  • Sisemine liitumine
  • Väline liitumine

Sisemine liitumine

Sisemisi ühendusi on 3 tüüpi:

  • Theta liituda
  • Loomulik liitumine
  • EQUI liituvad

Theta Liitu

Teetaühendus võimaldab liituda kahe tabeliga tingimusel, mida teeta esindab. Theta liitumised saavad töötada kõigi võrdlusoperaatoritega. Enamasti nimetatakse teetaühendust sisemiseks liitumiseks.

Teetaühendus on põhiline JOIN-i tüüp. See tagastab kõik tabelite read, kus JOIN-tingimus on täidetud.

Süntaks:

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

Mõelge järgmistele Demo andmebaasi tabelitele:

Raamat:

Hind:

Soovime näha iga raamatu nime ja vastavat Hinda. Saame käivitada järgmise käsu:

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

See annab järgmise tulemuse:

Ainult 3 rida rahuldas liitumistingimust.

EQUI Liitu

EQUI liitumine annab meile võimaluse ühendada kaks tabelit, mis põhinevad primaarvõtme / võti võtmel. Näiteks:

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

See annab järgmise tulemuse:

Mõlemast tabelist on kirjed tagastatud ühiste veergude, st id-veeru põhjal.

Loomulik liitumine

Seda tüüpi liitumine annab meile veel ühe võimaluse kirjutada EQUI liitumine. Saame oma eelmist näidet paremaks muuta, kui lisada märksõna NATURAL, nagu allpool näidatud:

SELECT *FROM BookNATURAL JOIN Price;

See annab järgmise tulemuse:

Tagastatud on ainult üks ID-veerg. NATURAL JOIN suutis märkida, et id-veerg on kahes tabelis levinud. Ainult üks tagastati.

Välised liitumised

PostgreSQL-is on kolme tüüpi väliseid JOIN-sid:

  • Vasakpoolne välimine liitumine.
  • Õige välimine liitumine.
  • Täielik väline liitumine

VASEM VÄLIS LIITUMINE

LEFT OUTER JOIN tagastab kõik tabeli read vasakul küljel ja ainult need parempoolse tabeli read, kus liitumistingimus on täidetud.

Süntaks:

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

Peame nägema iga raamatu nime ja vastavat Hind. Saame käivitada järgmise käsu:

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

See tagastab järgmise:

Kõik raamatu tabeli 4 rida on tagastatud. Ainult 3 rida tabelist Hind vastas liitumistingimusele. Seetõttu saadeti nad tagasi. Viimasel raamatul puudub vastav hinnaväärtus.

PAREM VÄLIS LIITUMINE

PAREM OUTER JOIN tagastab parempoolsel küljel kõik tabeli read ja vasakpoolsed tabeli read, kus liitumistingimus on täidetud.

Süntaks:

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

Näiteks:

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

See tagastab järgmise:

Kõik tabeli Hind read on tagastatud. Tagastati ainult raamatu tabeli read, mis vastasid liitumistingimusele. 3 rd rida ei ole raha nimi kuna ükski leiti vaste.

Täielik väline liitumine

Seda tüüpi JOIN tagastab kõik tabeli read vasakul küljel ja kõik tabeli parempoolsed read nullidega, kui liitumistingimus pole täidetud.

Süntaks:

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

Näiteks:

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

See tagastab järgmise:

Kõikide tabelite kõik read on tagastatud koos nullidega, kus vastet ei leitud.

PgAdmini kasutamine

Eespool nimetatud ülesandeid saab pgAdminis täita järgmiselt:

Sisemine liitumine

Theta Liitu

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

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

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

EQUI Liitu

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

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

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

Loomulik liitumine

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

SELECT *FROM BookNATURAL JOIN Price;

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

INNER JOIN (lihtne liitumine)

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

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

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

Välised liitumised

VASEM VÄLIS LIITUMINE

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

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

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

PAREM VÄLIS LIITUMINE

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

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

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

Täielik väline liitumine

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

Samm 3) Sisestage päring päringiredaktorisse:

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

Samm 4) Klõpsake nuppu Execute.

See peaks tagastama järgmise:

Kokkuvõte:

  • PostgreSQL-is kasutame JOIN-e, kui peame väärtusi hankima rohkem kui ühest tabelist.
  • INNER JOIN on kõige tavalisem JOIN. See tagastab kõik kirjed, kus määratud JOIN-tingimus oli täidetud.
  • LEFT OUTER JOIN tagastab kõik vasakpoolse tabeli read ja ainult teise tabeli read, kus liitumistingimus on täidetud.
  • PAREM OUTER JOIN tagastab parempoolse tabeli kõik read ja teises tabelis ainult need read, kus liitumistingimus on täidetud.
  • Seda tüüpi JOIN tagastab kõik vasakpoolse tabeli read ja kõik parempoolse tabeli read nullidega, kui liitumistingimus pole täidetud.

Laadige alla selles õpetuses kasutatud andmebaas