Sisemine Liit vs välimine Liitumine
Sisemine ja välimine liitumine on kaks SQL-i liitmismeetodit, mida kasutatakse andmebaaside päringute töötlemisel. Need kuuluvad liitumisklauslite perekonda (teised kaks on vasak- ja paremliited). Siiski on olemas Self Join, mida saab kasutada eriolukordades. Ühenduse eesmärk on kombineerida väljad kahe tabeli ühisväärtuste abil. Need ühendused ühendavad mitme andmebaasi tabelis olevad kirjed. See loob tulemuseks olevad komplektid, mida saab salvestada teise tabelina.
Mis on sisemine liitumine?
Kõige sagedamini kasutatav SQL-ühenduse toiming on sisemine liitumine. Seda võib pidada rakendustes kasutatavaks vaikeühenduse tüübiks. Sisemine liitmine kasutab kahe tabeli ühendamiseks predikaati liitmine. Eeldades, et kaks tabelit on A ja B, võrdleb liitumispredikaat A ja B ridu, et leida kõik predikaadile vastavad paarid. Tulemuse loomiseks kombineeritakse kõigi A- ja B-tabelite rahuldatud ridade veergude väärtused. Seda võib vaadelda nii, et kõigepe alt võetakse kõigi kirjete ristliitmine (Cartesiuse korrutis) ja seejärel tagastatakse ainult need kirjed, mis vastavad liitepredikaadile. Kuid tegelikkuses Descartes'i toodet ei arvutata, kuna see on väga ebaefektiivne. Selle asemel kasutatakse räsiliitumist või sortimis-liitmist.
Mis on Outer Join?
Erinev alt sisemisest ühendusest säilitab välimine liitmine kõik kirjed isegi siis, kui see ei leia sobivat kirjet. See tähendab, et välimine liitumine vajab kirjet, et leida sobiv kirje, et see tulemuses kuvada. Selle asemel tagastab see kõik kirjed, kuid mittevastavatel kirjetel on nullväärtused. Välimised ühendused on jagatud kolme alamkategooriasse. Need on vasakpoolne ühendus, parempoolne ühendus ja täielik välimine ühendus. See eristamine põhineb sellel, millise tabeli (vasak tabel, parem tabel või mõlemad tabelid) rida jäetakse alles, kui leitakse sobimatuid kirjeid. Vasakpoolsed välimised ühendused (tuntud ka kui lihts alt vasakühendus) säilitavad kõik vasakpoolse tabeli kirjed. See tähendab, et isegi kui kattuvate kirjete arv on null, on sellel endiselt kirjed tulemuste tabelis, kuid sellel on nullväärtused kõigi B veergude jaoks. Teisisõnu, kõik vasakpoolse tabeli väärtused tagastatakse sobivate väärtustega parem alt. tabel (või nullväärtused, kui need ei sobi). Kui vasakpoolse tabeli mitme rea väärtused sobitatakse ühe parema tabeli reaga, korratakse parempoolse tabeli rida vastav alt vajadusele. Parempoolne välimine ühendus on üsna sarnane vasakpoolse välisühendusega, kuid tabelite käsitlemine on austatud. See tähendab, et tulemusel on kõik parempoolse tabeli read vähem alt üks kord sobitatud vasaku tabeli väärtustega (ja nullväärtustega sobitamata parempoolsete väärtuste puhul). Täielik välimine ühendus on põhjalikum kui vasak- ja parempoolne välisühendus. Selle tulemuseks on nii vasaku kui ka parema välispinna ühendamise efekt.
Mis vahe on sisemisel ja välimisel liitumisel?
Sisemine liitmine ei säilita tulemuses sobimatuid ridu, kuid välimine ühendamine säilitab kõik vähem alt ühe tabeli kirjed (olenev alt sellest, millist välimist liitumist on kasutatud). Seega on ebasoovitav käitumine, mille kohaselt tulemuste tabeli sobimatutel ridadel puudub teave, peate alati kasutama üht välimist ühendust (sisemise ühenduse asemel). Sisemine ühendamine ei pruugi anda tulemust, kui vasteid ei leita. Kuid välimine ühendamine annab alati tulemuseks tabeli, isegi ilma sobivate ridadeta. Sisemine liitmine tagastab alati väärtustega tabelid (kui tagastatakse). Kuid välimised ühendused võivad põhjustada nullväärtustega tabeleid.