SQL-i alampäring Ühendage välispäringuga

Sql I Alamparing Uhendage Valisparinguga



Relatsiooniandmebaasidega töötamisel peate teadma, kuidas päringuid soovitud ülesannete täitmiseks töödelda ja kombineerida. Seetõttu rakendab iga relatsiooniandmebaasi mootor oma SQL-keele maitset, püüdes pakkuda kasutajatele erakordseid funktsioone, tõhusust ja kasutusmugavust.

Üks SQL-i võimsamaid funktsioone on alampäringud. Alampäringud on pesastatud päringute kogum suuremas ja keerulisemas päringus. Alampäringud võimaldavad teil andmeid hankida või teha keerukamaid toiminguid ühe üksusena.







Alampäringuid saame kasutada andmete filtreerimiseks, sortimiseks, liitmiseks mitmes tabelis ja palju muud.



Kuid veel üks funktsioon, mis on peidetud SQL-i alampäringute all, on tuntud kui alampäringu liitumised. Need on sarnased alampäringutega; selle asemel on need ühendused, mis võimaldavad teil kasutada välispäringu alampäringuid tabelite ühendamiseks.



Kui teie pea käib ringi, ärge muretsege, sest alampäringu ühendamine võib olla keeruline, eriti alguses. See õpetus üritab aga alampäringu liite elementaarsete sammude kaupa lahti murda, jätmata liiga palju juhuse hooleks.





Pidage meeles, et eeldame, et te pole SQL-i, SQL-i liitumiste, SQL-i alampäringute või muu sellise kasutaja jaoks uus. Kui olete, vaadake meie teemade õpetusi, et rohkem teada saada.

Õppige SQL-i välisühendusi

Kui soovite mõista, kuidas alampäringu liitumistega töötada, on väliste ühendustega töötamise õppimine võtmetegur.



Kui te pole tuttav, võimaldab SQL-i välimine liitmine tuua kõik read ühest tabelist ja vastavad read teisest tabelist. See on sellest pisut keerulisem, sealhulgas vasakpoolne välimine ühendus, parem välimine ühendus, täielik välimine ühendus jne.

SQL-i vasakpoolses välimises ühenduses tagastab päring kõik vasakpoolse tabelis olevad read ja paremast tabelist vastavad read. Kui paremas tabelis pole ühtegi sobivat rida, sisaldab päring saadud veergudes NULL-väärtusi.

Parempoolse välisühenduse korral tagastab päring kõik parempoolse tabelis olevad read, kuid ainult vasakpoolsest tabelist vastavad read. Samamoodi sisaldab päring NULL-väärtusi, kui vasakpoolsest tabelist pole sobivaid ridu.

Lõpuks on meil täielik välimine liitmine. See liitmine tagastab kõik parem- ja vasakpoolsete tabelite read ning mittevastavate kirjete NULL-väärtused.

SQL-i alampäringu liitumised

Nüüd, kui oleme SQL-i alampäringutest aru saanud, räägime alampäringute liitumisest. Alampäringu liitmised võimaldavad meil kasutada tabelite ühendamiseks välispäringu alampäringuid.

Kui te küsite, kas see on nii? Jah, see on kõik, mida alampäringu liitumised teevad.

Selle paremaks demonstreerimiseks võtke järgmine süntaksinäide, mida on näidatud järgmises:

VALI *
tabelist1
VASAKU VÄLIMISE LIITUMINE (
VALI veerg1, veerg2
tabelist2
) AS-i alampäring
ON tabel1.veerg3 = alampäring.veerg1;


Eelmises süntaksis valisime tabelist 1 kõik veerud, kasutades vasakpoolset välimist liitmist, et ühendada see alampäringuga. Alampäringu ülesanne on tuua määratletud veerud tabelist 2. Seejärel ühendame selle tabeliga 1 tingimusel, et tabelist 1 on veerg 2 ja alampäringu veerg 1.

Praktiline näide:

Teoreetiliselt tundub see vähem intuitiivne, kuid võtame Sakila andmebaasi kasutades reaalse maailma stsenaariumi.

Oletame, et tahame hankida kõigi andmebaasis olevate filmide loendi ja nende vastavad keeled. Filmide keeled salvestatakse keeletabelisse ja filmide nimed filmitabelisse.

Filmitabelis on aga võõrvõti, mida nimetatakse keeletabeli veerguks “language_id”. Seetõttu saame kahe tabeli ühendamiseks kasutada alampäringu liitmist vasakpoolse välimise ühendusega, nagu on näidatud järgmises päringus:

SELECT f.title, l.name AS keel
Filmist f
VASAKU VÄLIMISE LIITUMINE (
SELECT language_id, name
keelest
) AS l
ON f.keele_id = l.keele_id;


Eelmises näidispäringus valime filmitabelist pealkirja veeru ja keeletabelist nimeveeru.

Seejärel valime alampäringu abil keelte tabelist keele_id ja veeru nimi. Järgmine samm on selle ühendamine filmitabeliga tingimusel, et keele_id filmitabelist võrdub keele_id keeletabelist.

Tagamaks, et kõik kiled oleksid tulemusesse kaasatud, peame kasutama vasakpoolset välimist ühendust, mis koosneb kõigist vasakpoolse tabeli tulemustest, mis antud juhul on kiletabel.

Näidisväljund on järgmine:


Sama saame teha ka parempoolse välisühendusega. Süntaks on järgmine:

VALI *
tabelist1
PAREM VÄLILINE LIITUMINE (
VALI veerg1, veerg2
tabelist2
) AS-i alampäring
ON tabel1.veerg3 = alampäring.veerg1;


See käitub sarnaselt, kuid sisaldab kõiki õiges tabelis olevaid kirjeid isegi siis, kui vastavaid kirjeid pole.

Kasulikud asjad, mida teada

On hea mõista, et kuigi alampäringu liitmised on väga kasulikud ja võivad teie töövoogu optimeerida, kasutage neid ettevaatlikult.

Näiteks vältige alampäringu ühendamist suure andmekogumiga. Seda seetõttu, et nad saavad tagastada ulatuslikud kirjed, mis võivad mõjutada andmebaasi jõudlust.

Enne alampäringu ühendamist kaaluge päringute analüüsi tööriistade kasutamist.

Järeldus

See õpetus uuris SQL-i alampäringute ja alampäringu liitumistega töötamise põhialuseid. Selle õpetuse lõpus saate nüüd aru, kuidas alampäringu liitumistega töötada, miks teil võib tekkida vajadus neid kasutada, ja praktilise näite selle kohta, kuidas need võivad teid töövoos aidata.