Vnútorné pripojenie vs Vonkajšie pripojenie
Vnútorné pripojenie a vonkajšie pripojenie sú dve metódy spájania SQL používané pri spracovaní dotazov pre databázy. Patria do rodiny klauzúl o spojení (ďalšie dve sú Left a Right Joins). Existuje však samoobsluha, ktorá sa môže použiť v špecializovaných situáciách. Účelom spojenia je kombinovať polia pomocou spoločných hodnôt do týchto dvoch tabuliek. Tieto spojenia kombinujú záznamy z viacerých tabuliek v databáze. Vytvára výsledné množiny, ktoré je možné uložiť ako ďalšiu tabuľku.
Čo je to vnútorné spojenie?
Najčastejšie používanou operáciou SQL Join je Inner Join. Môže sa to považovať za predvolený typ spojenia použitého v aplikáciách. Vnútorné spojenie používa predikát spojenia na spojenie dvoch tabuliek. Za predpokladu, že tieto dve tabuľky sú A a B, potom predikát spojenia porovná rady A a B a zistí všetky páry, ktoré vyhovujú predikátu. Na vytvorenie výsledku sa kombinujú hodnoty stĺpcov všetkých spokojných riadkov tabuliek A a B. Môže sa naň pozerať ako na prvé, keď vezmeme krížové spojenie (karteziánsky produkt) všetkých záznamov a potom vrátime iba záznamy, ktoré spĺňajú predikát spojenia. V skutočnosti sa však karteziánsky produkt nevypočítava, pretože je veľmi neefektívny. Namiesto toho sa používa spojenie typu hash alebo sort-merge.
Čo je to vonkajšie pripojenie?
Na rozdiel od funkcie Inner join, vonkajšie spojenie uchováva všetky záznamy, aj keď nemôže nájsť zodpovedajúci záznam. To znamená, že vonkajšie spojenie potrebuje na nájdenie zodpovedajúceho záznamu, aby sa vo výsledku objavil. Namiesto toho vráti všetky záznamy, ale neprepojené záznamy budú mať nulové hodnoty. Vonkajšie spojenia sú rozdelené do troch podkategórií. Sú ľavým vonkajším spojom, pravým vonkajším spojením a úplným vonkajším spojením. Toto rozlíšenie je založené na tom, ktorý riadok tabuľky (ľavá tabuľka, pravá tabuľka alebo obe tabuľky) sa zachová, keď sa nájdu neprepojené záznamy. Ľavé vonkajšie spojenia (tiež známe ako jednoducho ľavý spoj) si zachovajú všetky záznamy z ľavej tabuľky. To znamená, že aj keď sú záznamy zodpovedajúce číslu nula, budú mať stále vo výsledkovej tabuľke záznamy, ale budú mať nulové hodnoty pre všetky stĺpce B. Inými slovami, všetky hodnoty z ľavej tabuľky sa vracajú so zhodnými hodnotami zprava. tabuľka (alebo nulové hodnoty, ak sa nezhodujú). Ak sa hodnoty z viacerých riadkov z ľavej tabuľky zhodujú s jedným riadkom z pravej tabuľky, riadok z pravej tabuľky sa podľa potreby zopakuje. Pravý vonkajší spoj je skoro podobný ľavému vonkajšiemu spojeniu, ale spracovanie tabuliek je uctievané. To znamená, že výsledok bude mať všetky riadky pravej tabuľky aspoň raz s zhodujúcimi sa hodnotami v ľavej tabuľke (a nulové hodnoty pre nespárované správne hodnoty). Úplné vonkajšie spojenie je komplexnejšie ako vonkajšie aj ľavé a pravé spojenie. Výsledkom je kombinácia účinku aplikácie spoja ľavý aj pravý vonkajší.
Aký je rozdiel medzi vnútorným pripojením a vonkajším pripojením?
Vnútorné spojenie nezachová vo výsledku neporovnateľné riadky, ale vonkajšie spojenie uchová všetky záznamy z aspoň jednej tabuľky (v závislosti od toho, ktoré vonkajšie spojenie bolo použité). Takže správanie, ktoré nemá k dispozícii žiadne informácie o neprepojených riadkoch vo výsledkovej tabuľke, je nežiaduce, musíte vždy použiť jeden z vonkajších spojení (namiesto vnútorného spojenia). Vnútorné spojenie nemusí priniesť výsledok, ak sa nenájdu žiadne zhody. Vonkajšie spojenie však vždy vytvorí výslednú tabuľku, a to aj bez zodpovedajúcich riadkov. Vnútorné spojenie vždy vráti tabuľky s hodnotami (ak boli vrátené). Vonkajšie spojenia však môžu mať za následok tabuľky s nulovými hodnotami.