Skirtumas tarp vidinio ir išorinio sujungimo

Skirtumas tarp vidinio ir išorinio sujungimo
Skirtumas tarp vidinio ir išorinio sujungimo

Video: Skirtumas tarp vidinio ir išorinio sujungimo

Video: Skirtumas tarp vidinio ir išorinio sujungimo
Video: Ремонт бескамерных шин самостоятельно и на долго.Ремонт колес своими руками. 2024, Gruodis
Anonim

Vidinis prisijungimas prieš išorinį prisijungimą

Vidinis sujungimas ir išorinis sujungimas yra du SQL sujungimo metodai, naudojami duomenų bazių užklausoms apdoroti. Jie priklauso sujungimo sąlygų šeimai (kiti du yra kairysis ir dešinysis sujungimas). Tačiau yra „Self Join“, kurią galima naudoti specializuotose situacijose. Sujungimo tikslas yra sujungti laukus naudojant bendras reikšmes į dvi lenteles. Šie sujungimai sujungia įrašus iš kelių duomenų bazės lentelių. Tai sukuria gautus rinkinius, kuriuos galima išsaugoti kaip kitą lentelę.

Kas yra vidinis prisijungimas?

Dažniausiai naudojama SQL prisijungimo operacija yra vidinis sujungimas. Tai gali būti laikoma numatytuoju programose naudojamu sujungimo tipu. Vidinis sujungimas naudokite sujungimo predikatą, kad sujungtumėte dvi lenteles. Darant prielaidą, kad dvi lentelės yra A ir B, tada sujungimo predikatas palygins A ir B eilutes, kad išsiaiškintų visas poras, kurios tenkina predikatą. Visų patenkintų A ir B lentelių eilučių stulpelių reikšmės sujungiamos, kad būtų sukurtas rezultatas. Galima žiūrėti, kad pirmiausia paimamas visų įrašų kryžminis sujungimas (Dekarto sandauga), o tada grąžinami tik tie įrašai, kurie atitinka sujungimo predikatą. Tačiau iš tikrųjų Dekarto produktas nėra skaičiuojamas, nes jis yra labai neefektyvus. Vietoj to naudojamas maišos sujungimas arba rūšiavimo sujungimas.

Kas yra išorinis prisijungimas?

Kitaip nei vidinis sujungimas, išorinis sujungimas išsaugo visus įrašus, net jei neranda atitinkamo įrašo. Tai reiškia, kad išoriniam sujungimui reikalingas įrašas, kad būtų galima rasti atitinkamą įrašą, kad jis būtų rodomas rezultate. Vietoj to, jis grąžins visus įrašus, tačiau nesuderintų įrašų reikšmės bus nulinės. Išoriniai sujungimai yra suskirstyti į tris subkategorijas. Jie yra kairiojo išorinio sujungimo, dešiniojo išorinio sujungimo ir visiško išorinio sujungimo. Šis atskyrimas grindžiamas tuo, kurios lentelės (kairiosios lentelės, dešiniosios lentelės ar abiejų lentelių) eilutė išsaugoma, kai randami nesutampantys įrašai. Kairysis išorinis sujungimas (taip pat žinomas kaip tiesiog kairysis sujungimas) išsaugo visus kairiosios lentelės įrašus. Tai reiškia, kad net jei skaičių atitinkančių įrašų yra nulis, rezultatų lentelėje vis tiek bus įrašai, bet visuose B stulpeliuose bus nulinės reikšmės. Kitaip tariant, visos vertės iš kairės lentelės grąžinamos su suderintomis vertėmis iš dešinės. lentelę (arba nulines reikšmes, kai jos nesuderinamos). Jei vertės iš kelių eilučių iš kairės lentelės suderinamos su viena eilute iš dešinės lentelės, eilutė iš dešinės lentelės bus pakartota pagal poreikį. Dešinysis išorinis sujungimas yra beveik panašus į kairįjį išorinį sujungimą, tačiau lentelių apdorojimas yra gerbiamas. Tai reiškia, kad rezultate bent kartą bus visos dešiniosios lentelės eilutės su atitinkančiomis kairiosios lentelės reikšmėmis (ir nulinėmis vertėmis nesuderintoms dešiniosioms reikšmėms). Visas išorinis sujungimas yra išsamesnis nei kairysis ir dešinysis išorinis sujungimas. Dėl to sujungiamas kairysis ir dešinysis išorinis sujungimo efektas.

Kuo skiriasi vidinis sujungimas ir išorinis sujungimas?

Vidinis sujungimas neišsaugo nesuderintų rezultato eilučių, tačiau išorinis sujungimas išsaugos visus įrašus iš bent vienos lentelės (atsižvelgiant į tai, koks išorinis sujungimas buvo naudojamas). Taigi elgesys, kai rezultatų lentelės nesuderintose eilutėse nėra informacijos, yra nepageidautinas, visada turite naudoti vieną iš išorinių sujungimų (vietoj vidinio sujungimo). Vidinis sujungimas gali neduoti rezultato, jei nerasta atitikmenų. Tačiau išorinis sujungimas visada sukurs rezultatyvią lentelę, net jei nėra atitinkamų eilučių. Vidinis sujungimas visada grąžins lenteles su reikšmėmis (jei grąžinama). Tačiau dėl išorinių sujungimų gali susidaryti lentelės su nulinėmis reikšmėmis.

Rekomenduojamas: