SQL išorinis prisijungimas

Sql Isorinis Prisijungimas



Savaime suprantama, kad prisijungimai yra viena iš labiausiai atpažįstamų reliacinių duomenų bazių savybių. Sujungimai leidžia sujungti duomenis iš vienos ar kelių lentelių pagal susijusią sąlygą, kad būtų sukurta nuosekli duomenų operacija.

SQL yra įvairių tipų sujungimų, kurių kiekvienas turi unikalų būdą, kaip tvarko duomenis iš dalyvaujančių lentelių arba gauto rinkinio. Vienas iš labiausiai paplitusių SQL sujungimo tipų yra OUTER JOIN.







OUTER JOIN SQL nuskaito visas atitinkamas eilutes iš susijusių lentelių, taip pat nesuderintas eilutes iš vienos arba abiejų lentelių. Tai naudinga, kai dirbate su lentelėmis, kuriose yra NULL reikšmės arba trūkstamų rinkinių.



Panagrinėkime toliau, ką šie sujungimai daro, kaip jie veikia ir kaip galime juos naudoti SQL duomenų bazėje.



Reikalavimai:

Šioje pamokoje dirbsime su MySQL 8.0 ir naudosime Sakila duomenų bazę. Tačiau nedvejodami naudokite bet kokį kitą duomenų rinkinį, kuris, jūsų nuomone, yra tinkamas.





Išorinių sujungimų tipai

SQL yra trys pagrindiniai IŠORINIŲ JUNGIŲ tipai. Šie IŠORINIŲ SUJUNGIMŲ tipai apima:

  1. Išėjo OUTTER JOINS

  2. LEFT OUTTER JOINS atveju sujungimas nuskaito visas kairiosios lentelės eilutes ir tik atitinkančias eilutes iš dešinės lentelės. Jei dešinėje lentelėje nėra atitinkamų eilučių, sujungimas grąžina NULL reikšmes dešiniosios lentelės stulpeliams.



  3. Dešiniosios IŠORINĖS PRIJUNGIMAS

  4. Tai panašu į RIGHT OUTTER JOIN. Tačiau jis nuskaito visas dešiniosios lentelės eilutes, bet tik atitinkančias eilutes iš kairiosios lentelės. Jei kairiojoje lentelėje nėra atitinkančių eilučių, sujungimas apima NULL reikšmes kairiosios lentelės stulpeliams.

  5. VISOS IŠORĖS JUNGTYS

  6. Galiausiai, turime VISUS IŠORINIUS PRIJUNGIMUS. Šio tipo sujungimai sujungia ir DEŠINĮ, ir KAIRĮ išorinius sujungimus. Dėl to sujungimas nuskaito visas eilutes, kai kairėje arba dešinėje lentelėje yra atitiktis. Jei nėra atitikties, sujungimas pateikia NULL stulpelių reikšmes iš lentelės be atitikties.

SQL OUTER JOIN sintaksė

Toliau išreiškiama SQL OUTER JOIN sintaksė. Tačiau verta nepamiršti, kad sintaksė gali šiek tiek skirtis priklausomai nuo tikslinės duomenų bazės variklio.

Toliau pateikiama bendra struktūra:

PASIRINKITE stulpelius
IŠ lentelės1
[KAIRĖ | DEŠINĖ | FULL] OUTTER JOIN lentelė2
ĮJUNGTA lentelė1.stulpelio_pavadinimas = lentelė2.stulpelio_pavadinimas;

OUTER JOIN sintaksė SQL yra gana savaime suprantama.

Pavyzdžiai:

Pažvelkime į kai kuriuos naudojimo pavyzdžius, kaip galime pritaikyti įvairių tipų IŠORINIUS JUNGIUS SQL.

Kaip minėjome, demonstravimui naudosime Sakilos pavyzdinę duomenų bazę. Šiuo atveju naudojame lenteles „klientas“ ir „mokėjimas“.

1 pavyzdys: KAIRIS IŠORINIS PRIJUNGIMAS

Pradėkime nuo IŠORINIO JOIN. Tarkime, kad norime gauti visą kliento informaciją kartu su mokėjimo informacija, jei tokia yra.

Dėl to taikomas KAIRIS IŠORINIS PRIJUNGIMAS, nes norime visos informacijos apie klientus (kairėje) ir mokėjimo informacijos, jei yra (dešinėje).

Jei klientas neatliko jokio mokėjimo, sujungimas rodys su mokėjimu susijusių stulpelių NULL vertes.

Pavyzdys yra toks:

PASIRINKTI
c.customer_id,
c.first_name,
c.pavardė,
p. suma,
p.mokėjimo_data
NUO
klientas c
LEFT OUTER JOIN mokėjimo p
ĮJUNGTA
c.kliento_id = p.kliento_id;

Pateiktoje užklausoje įtraukiame stulpelius „customer_id“, „first_name“ ir „last_name“ iš lentelės „customer“. Taip pat įtraukiame sumą ir „mokėjimo_datą“ iš lentelės „mokėjimas“.

Tada atliekame LEFT OUTTER JOIN tarp „kliento“ ir „mokėjimo“ lentelių pagal „customer_id“.

Tai visi klientai (nepriklausomai nuo to, ar mokėjimas atliktas, ar ne), kartu su jų mokėjimo informacija (jei yra).

Išvesties pavyzdys yra toks:

2 pavyzdys: DEŠINIS IŠORINIS PRIJUNGIMAS

Dabar pereikime prie DEŠINIO IŠORINIO PRISIJUNGIMO. Tarkime, kad šiuo atveju norime įtraukti visą mokėjimo informaciją ir susijusį klientą, jei toks yra.

Tokiu atveju, jei mokėjimą atlieka klientas, prisijungime bus rodomi to kliento duomenys. Jei yra mokėjimas be susieto kliento, jame bus rodomos su klientu susijusių stulpelių NULL reikšmės.

PASIRINKTI
c.customer_id,
c.first_name,
c.pavardė,
p. suma,
p.mokėjimo_data
NUO
klientas c
RIGHT OUTER JOIN mokėjimas p
ĮJUNGTA
c.kliento_id = p.kliento_id;

Gautas rinkinys yra toks:

3 pavyzdys: VISAS IŠORINIS PRIJUNGIMAS

FULL OUTTER JOIN, kita vertus, nuskaito visą kliento informaciją ir mokėjimą. Tai apima visus klientus ir visus mokėjimus ir rodo NULL reikšmes, kai lentelės nesutampa.

PASIRINKTI
c.customer_id,
c.first_name,
c.pavardė,
p. suma,
p.mokėjimo_data
NUO
klientas c
FULL OUTER JOIN mokėjimas p
ĮJUNGTA
c.kliento_id = p.kliento_id;

Verta nepamiršti, kad „MySQL“ iš esmės nepalaiko VISO IŠORINĖS JOIN. Turite atlikti džiudžitsu magiją naudodami LEFT JOIN, UNION ir RIGHT JOIN. Gana erzina, galime pridurti.

Išvada

Šioje mokymo programoje sužinojome viską apie IŠORINIUS JUNGIMAS. Sužinojome, kas yra IŠORINIS JUNGIMAS SQL, OUTER JOINS tipus ir šių tipų OUTER JOINS naudojimo pavyzdžius.