Rozdiel medzi vnútorným a vonkajším spojením

Rozdiel medzi vnútorným a vonkajším spojením
Rozdiel medzi vnútorným a vonkajším spojením

Video: Rozdiel medzi vnútorným a vonkajším spojením

Video: Rozdiel medzi vnútorným a vonkajším spojením
Video: Worlds 2022 Preview: Jungler Rankings 2024, Júl
Anonim

Vnútorné spojenie vs vonkajšie spojenie

Vnútorné spojenie a Vonkajšie spojenie sú dve metódy spájania SQL používané pri spracovaní dotazov pre databázy. Patria do skupiny spojovacích doložiek (ďalšie dve sú ľavé a pravé spojenie). Existuje však vlastné spojenie, ktoré možno použiť v špeciálnych situáciách. Účelom Join je spojiť polia pomocou spoločných hodnôt pre dve tabuľky. 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 Inner Join?

Najbežnejšie používaná operácia SQL Join je Inner Join. Možno ho považovať za predvolený typ spojenia používaný v aplikáciách. Vnútorné spojenie použite predikát spojenia na spojenie dvoch tabuliek. Za predpokladu, že dve tabuľky sú A a B, potom predikát spojenia porovná riadky A a B, aby zistil všetky páry, ktoré vyhovujú predikátu. Hodnoty stĺpcov všetkých spokojných riadkov tabuliek A a B sa skombinujú, aby sa vytvoril výsledok. Dá sa na to pozerať tak, že sa najprv vezme krížové spojenie (karteziánsky súčin) všetkých záznamov a potom sa vrátia iba záznamy, ktoré spĺňajú predikát spojenia. V skutočnosti sa však karteziánsky súčin nevypočítava, pretože je veľmi neefektívny. Namiesto toho sa používa spojenie hash alebo sort-merge.

Čo je Outer Join?

Na rozdiel od vnútorného spojenia, vonkajšie spojenie uchováva všetky záznamy, aj keď nedokáže nájsť zodpovedajúci záznam. To znamená, že vonkajšie spojenie potrebuje záznam na nájdenie zodpovedajúceho záznamu, aby sa objavilo vo výsledku. Namiesto toho vráti všetky záznamy, ale nezhodné záznamy budú mať hodnoty null. Vonkajšie spoje sú rozdelené do troch podkategórií. Sú to ľavé vonkajšie spojenie, pravé vonkajšie spojenie a úplné vonkajšie spojenie. 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 nezhodné záznamy. Ľavé vonkajšie spojenia (tiež známe ako jednoducho ľavé spojenie) uchovávajú všetky záznamy ľavej tabuľky. To znamená, že aj keď je počet zodpovedajúcich záznamov nula, bude mať stále záznamy vo výsledkovej tabuľke, ale bude mať hodnoty null pre všetky stĺpce B. Inými slovami, všetky hodnoty z ľavej tabuľky sa vrátia so zhodnými hodnotami sprava 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šie spojenie je do značnej miery podobné ľavému vonkajšiemu spojeniu, ale zaobchádzanie s tabuľkami je rešpektované. To znamená, že výsledok bude mať všetky riadky pravej tabuľky aspoň raz so zhodnými hodnotami ľavej tabuľky (a nulovými hodnotami pre nezhodné pravé hodnoty). Úplné vonkajšie spojenie je komplexnejšie ako ľavé aj pravé vonkajšie spojenie. Výsledkom je kombinácia efektu aplikácie oboch ľavých a pravých vonkajších spojených dohromady.

Aký je rozdiel medzi Inner Join a Outer Join?

Vnútorné spojenie nezachová nepriradené riadky vo výsledku, ale vonkajšie spojenie zachová 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, keď sa vo výslednej tabuľke nenachádzajú žiadne informácie o nezhodných riadkoch, je nežiaduce, musíte vždy použiť jedno 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, dokonca aj bez zodpovedajúcich riadkov. Vnútorné spojenie vždy vráti tabuľky s hodnotami (ak sa vrátia). Vonkajšie spojenia však môžu viesť k tabulkám s nulovými hodnotami.

Odporúča: