SQL antrinė užklausa Prisijunkite prie išorinės užklausos

Sql Antrine Uzklausa Prisijunkite Prie Isorines Uzklausos



Kai reikia dirbti su reliacinėmis duomenų bazėmis, turite išmokti manipuliuoti ir derinti užklausas, kad atliktumėte norimas užduotis. Štai kodėl kiekvienas reliacinės duomenų bazės variklis įgyvendina savo SQL kalbos skonį, stengdamasis savo vartotojams suteikti išskirtinių savybių, efektyvumo ir naudojimo paprastumo.

Viena iš galingiausių SQL funkcijų yra antrinės užklausos. Papildomos užklausos yra įdėtų užklausų rinkinys didesnėje ir sudėtingesnėje užklausoje. Papildomos užklausos leidžia gauti duomenis arba atlikti sudėtingesnes operacijas kaip vieną objektą.







Galime naudoti antrines užklausas duomenų filtravimui, rūšiavimui, kaupimui keliose lentelėse ir kt.



Tačiau kita funkcija, paslėpta po SQL antrinėmis užklausomis, vadinama antrinių užklausų sujungimais. Tai panašios į antrines užklausas; Vietoj to, jie yra sujungimai, leidžiantys naudoti išorinės užklausos papildomas užklausas, kad būtų galima sujungti lenteles.



Jei jūsų galva sukasi, nesijaudinkite, nes antrinių užklausų sujungimas gali būti sudėtingas, ypač pradžioje. Tačiau šioje mokymo programoje bandoma suskaidyti antrinės užklausos sujungimus paprastais žingsniais, nepaliekant per daug atsitiktinumui.





Atminkite, kad manome, kad nesate naujokas SQL, SQL sujungimų, SQL antrinių užklausų ar pan. Tačiau jei taip, peržiūrėkite mūsų mokymo programas šiomis temomis, kad sužinotumėte daugiau.

Įvaldykite SQL išorinius sujungimus

Jei norite suprasti, kaip dirbti su antrinių užklausų sujungimais, pagrindinis veiksnys yra išmokti dirbti su išoriniais sujungimais.



Jei nesate susipažinę, SQL išorinis sujungimas leidžia gauti visas eilutes iš vienos lentelės ir atitinkančias eilutes iš antrosios lentelės. Tai šiek tiek sudėtingesnė, įskaitant kairįjį išorinį sujungimą, dešinįjį išorinį sujungimą, visą išorinį sujungimą ir kt.

SQL kairiajame išoriniame sujungime užklausa grąžina visas kairiosios lentelės eilutes ir atitinkamas eilutes iš dešinės lentelės. Jei dešiniojoje lentelėje nėra atitinkamų eilučių, į užklausą įtraukiamos NULL reikšmės gautuose stulpeliuose.

Dešiniojo išorinio sujungimo atveju užklausa grąžina visas dešiniosios lentelės eilutes, bet tik atitinkančias kairiosios lentelės eilutes. Panašiai, jei kairiojoje lentelėje nėra atitinkamų eilučių, į užklausą įtraukiamos NULL reikšmės.

Galiausiai turime visą išorinį sujungimą. Šis sujungimas grąžina visas eilutes iš dešinės ir kairės lentelių ir NULL reikšmes bet kokiems neatitinkantiems įrašams.

SQL papildomos užklausos prisijungimai

Dabar, kai suprantame apie SQL antrines užklausas, pakalbėkime apie antrinių užklausų sujungimus. Papildomos užklausos sujungimai leidžia naudoti išorinės užklausos papildomas užklausas, kad galėtume sujungti lenteles.

Jei klausiate, ar tai? Taip, tai viskas, ką daro papildomos užklausos sujungimai.

Norėdami tai geriau parodyti, paimkite šį sintaksės pavyzdį, kuris parodytas toliau:

PASIRINKTI *
IŠ lentelės1
KAIRĖ IŠORINĖ PRIJUNGIMAS (
PASIRINKTI 1 stulpelį, 2 stulpelį
IŠ lentelės2
) AS antrinė užklausa
ĮJUNGTA lentelė1.stulpelis3 = antrinė užklausa.stulpelis1;


Ankstesnėje sintaksėje pažymėjome visus pirmosios lentelės stulpelius naudodami kairįjį išorinį sujungimą, kad sujungtume jį su antrine užklausa. Antrinės užklausos užduotis yra gauti apibrėžtus stulpelius iš 2 lentelės. Tada sujungiame ją su 1 lentele pagal 1 lentelės 2 stulpelio ir antrinės užklausos 1 stulpelio sąlygą.

Praktinis pavyzdys:

Teoriškai tai atrodo mažiau intuityvi, bet paimkime realų scenarijų, pasinaudodami Sakila duomenų baze.

Tarkime, kad norime gauti visų duomenų bazėje esančių filmų sąrašą ir atitinkamas jų kalbas. Filmų kalbos saugomos kalbų lentelėje, o filmų pavadinimai – filmų lentelėje.

Tačiau filmų lentelėje yra užsienio raktas, vadinamas kalbos lentelės stulpeliu „language_id“. Todėl galime naudoti papildomos užklausos sujungimą su kairiuoju išoriniu sujungimu, kad sujungtume dvi lenteles, kaip parodyta šioje užklausoje:

PASIRINKITE f.title, l.name AS kalbą
IŠ filmo f
KAIRĖ IŠORINĖ PRIJUNGIMAS (
PASIRINKITE kalbos_id, pavadinimą
IŠ kalbos
) AS l
ON f.kalbos_id = l.kalbos_id;


Ankstesniame pavyzdiniame užklausoje filmo lentelėje pasirenkame pavadinimo stulpelį, o kalbų lentelės – pavadinimo stulpelį.

Tada naudojame antrinę užklausą, kad pasirinktume kalbos_id ir pavadinimo stulpelį iš kalbų lentelės. Kitas žingsnis yra sujungti jį su filmų lentele su sąlyga, kad language_id iš filmo lentelės yra lygus language_id iš kalbos lentelės.

Norėdami užtikrinti, kad į rezultatą būtų įtrauktos visos plėvelės, turime naudoti kairįjį išorinį sujungimą, kurį sudaro visi rezultatai iš kairiosios lentelės, kuri šiuo atveju yra plėvelės lentelė.

Išvesties pavyzdys yra toks:


Taip pat galime padaryti tą patį su dešiniuoju išoriniu sujungimu. Sintaksė yra tokia:

PASIRINKTI *
IŠ lentelės1
DEŠINIS IŠORINIS PRIJUNGIMAS (
PASIRINKTI 1 stulpelį, 2 stulpelį
IŠ lentelės2
) AS antrinė užklausa
ĮJUNGTA lentelė1.stulpelis3 = antrinė užklausa.stulpelis1;


Tai veikia panašiai, bet apima visus įrašus dešinėje lentelėje, net jei nėra atitinkamų įrašų.

Naudingi dalykai, kuriuos reikia žinoti

Verta suprasti, kad nors papildomos užklausos sujungimai yra nepaprastai naudingi ir gali optimizuoti darbo eigą, naudokite juos atsargiai.

Pavyzdžiui, nenaudokite papildomos užklausos sujungimų su dideliu duomenų rinkiniu. Taip yra todėl, kad jie gali grąžinti didelius įrašus, kurie gali turėti įtakos duomenų bazės veikimui.

Apsvarstykite galimybę naudoti užklausų analizės įrankius prieš vykdydami bet kokius antrinių užklausų sujungimus.

Išvada

Šioje pamokoje buvo nagrinėjami darbo su antrinėmis užklausomis ir antrinių užklausų sujungimais SQL pagrindai. Šios mokymo programos pabaigoje suprasite, kaip dirbti su antrinių užklausų sujungimais, kodėl gali prireikti juos naudoti, ir praktinį pavyzdį, kaip jie gali jums padėti jūsų darbo eigoje.