Siseühendus vs väline liitumine
Siseühendus ja väline liitumine on kaks SQL-i liitumismeetodit, mida kasutatakse andmebaaside päringute töötlemisel. Nad kuuluvad liitumisklauslite perekonda (ülejäänud kaks on vasak- ja parempoolsed liitumised). Siiski on olemas iseühendus, mida saab kasutada eriolukordades. Liitumise eesmärk on väljade ühendamine kahe tabeli ühiste väärtuste abil. Need liitumised ühendavad andmebaasi mitme tabeli kirjed. See loob tulemuseks olevad komplektid, mida saab salvestada teise tabelina.
Mis on sisemine liitumine?
Kõige sagedamini kasutatav SQL liitumisoperatsioon on sisemine liitumine. Seda võib pidada rakendustes kasutatavaks vaiketüübiks. Sisemine liitumine kasutage liitumis-predikaati kahe tabeli ühendamiseks. Kui kaks tabelit on A ja B, võrdleb liit-predikaat A ja B ridu, et leida kõik paarid, mis predikaadile vastavad. Tulemuste loomiseks ühendatakse kõigi rahuldatud A- ja B-tabelite veergude väärtused. Seda saab vaadelda nii, et kõigepealt võetakse kõigi kirjete ristühendus (Cartesiuse toode) ja seejärel saadetakse tagasi ainult need kirjed, mis vastavad liitumispredikaadile. Kuid tegelikkuses ei arvutata Cartesiuse toodet, kuna see on väga ebaefektiivne. Selle asemel kasutatakse hasartliitumist või sortimise-ühendamise liitumist.
Mis on väline liitumine?
Erinevalt sisemisest liitumisest hoiab väline liitumine kõiki kirjeid, isegi kui ta ei leia sobivat kirjet. See tähendab, et välimine liitumine vajab tulemuse ilmumiseks vastava kirje leidmiseks rekordit. Selle asemel tagastab see kõik kirjed, kuid tasakaalustamata kirjetel on nullväärtused. Välised liitumised jagunevad kolme alamkategooriasse. Need on vasakpoolne välimine ühendus, parem välimine ühendus ja täielik välimine ühendus. See eristamine põhineb sellel, millise tabeli (vasak tabel, parem tabel või mõlemad tabelid) rida säilitatakse, kui leitakse tasakaalustamata kirjed. Vasakpoolne välimine liitumine (tuntud ka kui lihtsalt vasakpoolne liitumine) säilitab kõik vasakpoolse tabeli kirjed. See tähendab, et isegi kui numbritega vastavad kirjed on null, siis on tulemustabelis sellegipoolest kirjeid, kuid sellel on kõigi B veergude väärtused null. Teisisõnu tagastatakse vasakult tabelilt kõik väärtused parempoolsete vastetega. tabel (või nullväärtused, kui see pole sobitatud). Kui vasakult tabelilt pärit mitme rea väärtused sobitatakse parempoolse tabeli ühe reaga, korratakse parempoolsest tabelist pärit rida vastavalt vajadusele. Parempoolne välimine liitumine on üsna sarnane vasaku välimise liitumisega, kuid tabelite käsitlemine on austatud. See tähendab, et tulemuses on kõik parempoolse tabeli read vähemalt üks kord vastendatud tabeli väärtustega (ja parema väärtuse parema väärtuse nullväärtused). Täielik välimine liitumine on terviklikum kui nii vasak kui ka parem välimine liitumine. Selle tulemuseks on nii vasaku kui ka parema välimise ühendamise efekti ühendamine.
Mis vahe on sisemisel liitumisel ja välimisel liitumisel??
Siseühendus ei hoia tulemuses tasakaalustamata ridu, kuid välimine liitmine hoiab kõik kirjed vähemalt ühest tabelist (sõltuvalt sellest, millist välimist liitmist on kasutatud). Seega on ebasoovitav käitumine, kui tulemustabelis pole tasakaalustamata ridade kohta teavet, peate alati kasutama ühte välimist liigendit (sisemise liitmise asemel). Siseühendus ei pruugi anda tulemust, kui vasteid ei leita. Kuid välimine liitmine loob alati tulemuseks oleva tabeli, isegi ilma vastavate ridadeta. Sisemine liitumine tagastab alati väärtustega tabelid (kui need tagastatakse). Kuid välimine liitumine võib põhjustada nullväärtustega tabeleid.