Sisäinen liittyminen vs Ulkoinen liittyminen
Sisäinen liittyminen ja ulkoinen liittyminen ovat kaksi SQL-liittymismenetelmää, jota käytetään tietokantojen kyselyjen käsittelyssä. Ne kuuluvat liittymislausekkeiden perheeseen (kaksi muuta ovat vasemman ja oikean liittymät). On kuitenkin Itseliityntä, jota voidaan käyttää erikoistilanteissa. Liittymisen tarkoituksena on yhdistää kentät käyttämällä yhteisiä arvoja kahteen taulukkoon. Nämä liittymät yhdistävät tietueet useista taulukoista tietokannassa. Se luo tuloksena olevat sarjat, jotka voidaan tallentaa toisena taulukkona.
Mikä on sisäinen liittyminen?
Yleisimmin käytetty SQL Join -operaatio on Inner Join. Sitä voidaan pitää sovelluksissa käytettävänä oletusliityntyyppinä. Sisäinen liittyminen yhdistä-predikaatin avulla yhdistä kaksi taulua. Olettaen, että kaksi taulukkoa ovat A ja B, silloin yhdistävä predikaatti vertaa A- ja B-rivejä selvittääksesi kaikki pareja, jotka tyydyttävät predikaatin. Kaikkien tyytyväisten A- ja B-taulukoiden sarakearvot yhdistetään tuloksen luomiseksi. Sitä voidaan tarkastella siten, että ensin otetaan kaikkien tietueiden ristiinkytkentä (Cartesian-tuote) ja palautetaan sitten vain tietueet, jotka täyttävät liittymis-predikaatin. Tosiasiassa Cartesian-tuotetta ei lasketa, koska se on erittäin tehoton. Sen sijaan käytetään hajautusta tai lajittelu-yhdistämistä.
Mikä on ulkoinen liittyminen?
Toisin kuin sisäinen liittymä, ulkoinen liittymä pitää kaikki tietueet, vaikka se ei löydä vastaavaa tietuetta. Tämä tarkoittaa sitä, että ulompi liittyminen tarvitsee tietueen löytääkseen vastaavan tietueen sen näkymiseksi tuloksessa. Sen sijaan se palauttaa kaikki tietueet, mutta vertaamattomilla tietueilla on nolla-arvot. Ulkoiset liitokset on jaettu kolmeen alakategoriaan. Ne ovat vasen ulompi liitos, oikea ulompi liitos ja täysi ulompi liitos. Tämä erottelu perustuu siihen, mikä taulukon (vasen taulukko, oikea taulukko tai molemmat taulukot) rivi säilytetään, kun etsimättömiä tietueita löytyy. Vasen ulompi liittyminen (tunnetaan myös nimellä yksinkertaisesti vasen liittyminen) säilyttää kaikki vasemman taulukon tietueet. Tämä tarkoittaa, että vaikka numeroita vastaavat tietueet olisivat nollat, sillä olisi edelleen tulostaulukon tietueita, mutta sillä olisi nolla arvoa kaikille B sarakkeille. Toisin sanoen kaikki vasemman taulukon arvot palautetaan vastaavilla arvoilla oikealta taulukko (tai nollat arvot, kun niitä ei soviteta yhteen). Jos vasemmanpuoleisesta taulukosta peräisin olevien useiden rivien arvot vastaavat yhtä riviä oikeasta taulukosta, oikeanpuoleisen taulukon rivi toistetaan tarpeen mukaan. Oikea ulompi liitos on melko samanlainen kuin vasen ulompi liitos, mutta pöytien käsittely on kunnioitettu. Tämä tarkoittaa, että tuloksessa on kaikki oikeanpuoleiset rivit ainakin kerran vastaavien vasemmanpuoleisten taulukkoarvojen kanssa (ja null-arvot vertaamattomien oikeiden arvojen kanssa). Täysi ulompi liitos on kattavampi kuin sekä vasen että oikea ulompi liitos. Tuloksena on yhdistää sekä vasemman että oikean ulomman yhdistämisen vaikutus.
Mitä eroa sisäisen liittymisen ja ulkoisen liittymisen välillä on??
Sisäinen liittymä ei pidä tuloksessa vertaamattomia rivejä, mutta ulkoinen liitos pitää kaikki tietueet ainakin yhdestä taulukosta (riippuen siitä, mitä ulkoista liitosta on käytetty). Joten käyttäytyminen, koska tulostaulun taulukkoon ei ole sovitettuja rivejä, ei ole toivottavaa, sinun on aina käytettävä jotakin ulkoista liitosta (sisäisen liitoksen sijasta). Sisäinen liittyminen ei välttämättä tuota tulosta, jos vastaavuuksia ei löydy. Mutta ulompi liitos tuottaa aina tuloksena olevan taulukon, jopa ilman vastaavia rivejä. Sisäinen liittyminen palauttaa aina arvot sisältävät taulukot (jos palautetaan). Mutta ulkoiset liitokset voivat johtaa taulukkoihin, joissa on nolla-arvot.