Notranji Vstopite proti Zunanji Pridružite se
Notranje združevanje in zunanje združevanje sta dve metodi združevanja SQL, ki se uporabljata pri obdelavi poizvedb za baze podatkov. Spadajo v družino klavzul za združevanje (druga dva sta Leva in Desna združitev). Vendar pa obstaja Self Join, ki se lahko uporablja za specializirane primere. Namen Join je združiti polja z uporabo skupnih vrednosti v dve tabeli. Te povezave združujejo zapise iz več tabel v bazi podatkov. Ustvari rezultirajoče nabore, ki jih je mogoče shraniti kot drugo tabelo.
Kaj je notranja povezava?
Najpogosteje uporabljana operacija SQL Join je Notranji Join. Lahko se šteje za privzeto vrsto pridruževanja, ki se uporablja v aplikacijah. Notranjo združitev uporabite predikat pridruži, da združite dve tabeli. Če predpostavimo, da sta dve tabeli A in B, potem bo predikat pridruževanja primerjal vrstic A in B, da bi ugotovil vse pare, ki izpolnjujejo predikat. Vrednosti stolpcev vseh zadovoljnih vrstic tabel A in B so združene, da se ustvari rezultat. Lahko je videti, da najprej vzamemo navzkrižni spoj (kartezijanski izdelek) vseh zapisov in nato vrnemo le zapise, ki izpolnjujejo predikat pridruživanja. Vendar v resnici kartezijanski proizvod ne izračunamo, ker je zelo neučinkovit. Namesto tega se uporablja Hash join ali sortiraj združitev.
Kaj je zunanja pridružitev?
Za razliko od notranjega združevanja, zunanji spoj vodi vse zapise, tudi če ne najde ustreznega zapisa. To pomeni, da za zunanje združevanje potrebuje zapis, da bi lahko našel ujemajoč se zapis, da se lahko prikaže v rezultatu. Namesto tega bo vrnil vse zapise, neprimerljivi zapisi pa bodo imeli ničelne vrednosti. Zunanje povezave so razdeljene v tri podkategorije. So levi zunanji spoj, desni zunanji spoj in polni zunanji spoj. Ta diferenciacija temelji na tem, katera vrstica tabele (leva tabela, desna tabela ali obe tabeli) se obdrži, če najdete neusklajene zapise. Levi zunanji spoji (znan tudi kot preprosto levi spoj) hrani vse zapise leve tabele. To pomeni, tudi če je število ujemajočih se zapisov nič, potem bo še vedno imel zapise v rezultatski tabeli, vendar bo imel ničelne vrednosti za vse stolpce B. Drugače povedano, vse vrednosti iz leve tabele se vrnejo z ujemajočimi se vrednostmi z desne tabela (ali ničelne vrednosti, če jih nimate). Če se vrednosti iz več vrstic z leve tabele ujemajo z eno vrstico iz desne tabele, se vrstica iz desne tabele po potrebi ponovi. Desni zunanji spoj je precej podoben levemu zunanjemu spoju, toda obravnava tabel je spoštovana. To pomeni, da bodo imeli rezultati vse vrstice desne tabele vsaj enkrat z ujemajočimi se vrednostmi leve tabele (in ničelnimi vrednostmi za nedorečene desne vrednosti). Popolni zunanji spoj je bolj celovit kot levi in desni zunanji spoj. Rezultat je kombiniranje učinka uporabe leve in desne zunanje strani.
Kakšna je razlika med notranjim pridruževanjem in zunanjim pridruživanjem?
Inner Join ne zadrži neprimerljivih vrstic v rezultatu, zunanji spoj pa bo hranil vse zapise iz vsaj ene tabele (odvisno od tega, kateri zunanji spoj je bil uporabljen). Torej je vedenje, da v rezultatski tabeli ni podatkov o neprimernih vrsticah, nezaželeno, vedno morate uporabiti enega od zunanjih spojev (namesto notranjega spajanja). Notranja povezava morda ne bo prinesla rezultata, če ne najdete nobene tekme. Toda zunanji spoj bo vedno ustvaril dobljeno tabelo, tudi brez ujemajočih se vrstic. Notranja združitev bo vedno vrnila tabele z vrednostmi (če so vrnjene). Toda zunanji spoji lahko povzročijo tabele z ničelnimi vrednostmi.