Vidinis prisijungimas vs išorinis prisijungimas
Vidinis prisijungimas ir išorinis prisijungimas yra du iš SQL sujungimo metodų, naudojamų apdorojant duomenų bazių užklausas. Jie priklauso prisijungimo sąlygų šeimai (kitos dvi yra kairiųjų ir dešiniųjų jungtys). Tačiau yra savarankiškas prisijungimas, kurį galima naudoti specialiose situacijose. Prisijungimo tikslas yra sujungti laukus, naudojant dvi lenteles, naudojant bendras vertes. Šie prisijungimai sujungia įrašus iš kelių lentelių duomenų bazėje. Tai sukuria gaunamus rinkinius, kuriuos galima išsaugoti kaip kitą lentelę.
Kas yra vidinis prisijungimas?
Dažniausiai naudojama SQL prisijungimo operacija yra vidinis prisijungimas. Tai gali būti laikoma numatytuoju prisijungimo tipu, naudojamu programose. Vidinį prisijungimą naudokite jungtuką-predikatą, kad sujungtumėte dvi lenteles. Darant prielaidą, kad dvi lentelės yra A ir B, tada junginys-predikatas palygins A ir B eiles, kad sužinotų visas poras, tenkinančias predikatą. Kad būtų sukurtas rezultatas, visų patenkintų A ir B lentelių eilučių stulpelių vertės yra sujungtos. Tai gali būti suprantama kaip pirmiausia paėmus visų įrašų kryžminį sujungimą (Dekarto produktas) ir tada pateikus tik tuos įrašus, kurie patenkina predikatą. Tačiau iš tikrųjų Dekarto produktas nėra apskaičiuojamas, nes jis yra labai neefektyvus. Vietoj to naudojamas prisijungimas maišant arba sujungiant.
Kas yra išorinis prisijungimas?
Priešingai nei vidinis prisijungimas, išorinis prisijungimas saugo visus įrašus, net jei nerandama atitinkančio įrašo. Tai reiškia, kad išoriniam prisijungimui reikia įrašo, kad būtų galima rasti atitikimo įrašą, kad jis galėtų pasirodyti rezultate. Vietoj to, bus grąžinti visi įrašai, tačiau nesuderinti įrašai turės nulinę reikšmę. Išoriniai sujungimai yra suskirstyti į tris pogrupius. Jie yra kairysis išorinis sujungimas, dešinysis išorinis sujungimas ir pilnasis išorinis sujungimas. Šis diferenciacija priklauso nuo to, kuri lentelės (kairioji lentelė, dešinė lentelė arba abi lentelės) eilutė išlaikoma, kai randami nesuderinti įrašai. Kairysis išorinis sujungimas (dar žinomas kaip tiesiog kairysis prisijungimas) saugo visus kairiojo stalo įrašus. Tai reiškia, kad net jei skaičių atitikimo įrašai yra nulis, jis vis tiek turės įrašus rezultatų lentelėje, bet turės nulines reikšmes visiems B stulpeliams. Kitaip tariant, visos vertės iš kairės lentelės grąžinamos suderintomis vertėmis iš dešinės. lentelė (arba nulinės vertės, kai jos nesutampa). Jei kelių eilučių iš kairės lentelės vertės yra suderintos su viena eilute iš dešinės lentelės, eilutė iš dešinės lentelės bus pakartota, kaip reikalaujama. Dešinysis išorinis sujungimas yra beveik panašus į kairįjį išorinį sujungimą, tačiau lentelių traktavimas yra gerbiamas. Tai reiškia, kad rezultatas turės visas dešinės lentelės eilutes bent kartą su suderintomis kairiosios lentelės reikšmėmis (ir neprilygstamomis nesuderintomis dešinėmis vertėmis). Visiškas išorinis sujungimas yra išsamesnis nei kairės ir dešinės išorinės jungtys. Tai lemia abiejų kairės ir dešinės išorinių sujungimų poveikį.
Kuo skiriasi vidinis prisijungimas ir išorinis prisijungimas?
Vidinis prisijungimas neišlaiko neprilygstamų eilučių rezultate, tačiau išorinis sujungimas saugo visus įrašus bent iš vienos lentelės (atsižvelgiant į tai, kuris išorinis sujungimas buvo panaudotas). Taigi, nepageidaujamas elgesys, kai rezultatų lentelėje nėra nesuderintų eilučių, visada reikia naudoti vieną iš išorinių sujungimų (vietoje vidinio sujungimo). Vidinis prisijungimas gali neduoti rezultato, jei nerandama atitikmenų. Bet išorinis sujungimas visada sudarys rezultatą, net neturintį atitinkamų eilučių. Vidinis prisijungimas visada grąžins lenteles su vertėmis (jei bus grąžintos). Bet išoriniai sujungimai gali sudaryti lenteles su nulinėmis reikšmėmis.