
Porovnávacia tabuľka
Základ pre porovnanie | Ľavý vonkajší spoj | Vpravo vonkajšie spojenie | Úplné vonkajšie spojenie |
---|---|---|---|
základné | Všetky vety ľavého stola zostávajú vo výsledku. | Všetky vety pravého stola zostávajú vo výsledku. | Všetky výsledky z ľavého aj pravého stola zostávajú vo výsledku. |
Rozšírenie NULL | Núky ľavej tabuľky, ktoré nemajú zodpovedajúcu n-tiku v pravej tabuľke, sú rozšírené o hodnotu NULL pre atribúty pravého tabuľky. | Nulové hodnoty pravého stola, ktoré nemajú zodpovedajúcu n-tiku v ľavej tabuľke, sú rozšírené o hodnotu NULL pre atribúty ľavej tabuľky. | Nulové hodnoty ľavej a pravej tabuľky, ktoré nemajú zodpovedajúce n-tity v pravom a ľavom stĺpci, sú rozšírené o hodnotu NULL pre atribúty pravého a ľavého tabuľky. |
Definícia ľavého vonkajšieho spojenia
Predpokladajme, že máme " Table_A Left Out Join Table_B ". Takže Table_A je naša ľavá tabuľka, ktorá sa javí vľavo od operácie ľavého vonkajšieho spojenia a Tabuľka_B je naša pravá tabuľka.
Spočiatku by bol vnútorný spoj použitý na tableoch A a Table_B, ktoré vrátia všetku zodpovedajúcu n-tiku z tabuľky A a B.
Potom vráti všetky n-tiny z tabuľky Table_A, ktoré nemajú zodpovedajúcu n-ticu v Table_B. Také, že výsledné n-tice by boli vyplnené hodnotami NULL pre atribúty pravého stola.
Preto výsledok získaný z ľavej vonkajšej spojky si zachováva všetky n-tice z ľavého stola a iba zodpovedajúce n-tice z pravého stola.
Diskutujme o ľavej vonkajšej spojke s príkladom; máme dve tabuľky nižšie, Tabuľka študentov a tabuľka oddelení .

Teraz použijeme ľavú vonkajšiu prihlášku, na študentskú a oddelenú tabuľku.
SELECT * FROM Oddelenie študentov LEFT OUTER JOIN
ON Student. Student_ID = Oddelenie.Student_ID
V dotaze vyššie, tabuľka Študent je ľavá tabuľka a tabuľka Oddelenie je správna tabuľka. Takže podľa ľavého vonkajšieho spojenia musí mať výsledok všetky n-tice z tabuľky Študentov a z tabuľky oddelenia iba zodpovedajúce n-tice.

Definícia pravého vonkajšieho spojenia
Predpokladajme, že máme " Table_A Right Oututer Join Table_B ". Takže Table_A je naša ľavá tabuľka, ako sa zdá, ľavá časť operácie Vonkajšie pripojenie a Table_B je naša pravá tabuľka.
Rovnako ako v ľavom vonkajšom pripojení, spočiatku by vnútorný spoj bol aplikovaný na Table_A a Table_B, ktoré vrátia všetku zodpovedajúcu n- tiku z tabuľky A a B.
Následne vráti všetky tuple z Tabuľky_B, ktoré nemajú zodpovedajúcu n-ticu v Tabuľke_A. Takže výsledné n-tice by boli vyplnené hodnotami NULL pre atribúty ľavej tabuľky.
Z toho vyplýva, že výsledok získaný z pravého vonkajšieho spoja si zachováva všetky n-tice z pravého stola a iba zhodné n-tice z ľavého stola.
Predstavme si pravú vonkajšiu prípojku s príkladom; vyššie máme dve tabuľky, tabuľku študentov a tabuľku oddelení.
Teraz použijeme pravú vonkajšiu prihlášku do tabuľky študentov a tabuliek oddelení.
SELECT * FROM Oddelenie Student RIGHT OUTER JOIN
ON Student. Student_ID = Oddelenie.Student_ID
V dotaze uvedenom vyššie je Študentská tabuľka tabuľkou ľavého stola a tabuľka oddelení je našou správnou tabuľkou. Podľa operácie Vonkajšie spojenie vpravo musí výsledok zahŕňať všetky n-tice z tabuľky oddelení a iba zodpovedajúce n-tice z tabuľky študentov.

Definícia úplnej vonkajšej spojky
Predpokladajme, že máme " Table_A Full Outer Join Table_B ". Takže Table_A je naša ľavá tabuľka, pretože sa zdá, že je vľavo z operácie Full Outer Join a Table_B je naša pravá tabuľka.
Full Out Join je kombinácia oboch, ľavého vonkajšieho spojenia a pravého vonkajšieho spojenia . Spočiatku platí vnútorné pripojenie na table_A a table_B na získanie zhody z oboch tabúľ. Potom rozširuje tie n- tiny Table_A s NULL, ktoré nemajú zodpovedajúcu n-ticu v Table_B. Ďalej rozširuje tieto tuple z table_B s NULL, ktoré nemajú zodpovedajúcu n-ticu v Table_A.
Preto Full Outround Join si zachováva všetky n-tice z ľavého aj pravého stola spolu so zodpovedajúcimi n-ticami oboch tabuliek.
Predstavme si príklad "FULL Outer Join". máme dve tabuľky vyššie, tabuľku študentov a tabuľku oddelení .
Teraz použijeme tabuľku Stolárske a oddelenie pre úplné vonkajšie pripojenie k študentom.
SELECT * FROM Oddelenie študentov FULL OUTER JOIN
ON Student. Student_ID = Oddelenie.Student_ID
Vo vyššie uvedenom dotaze je Študentská tabuľka naša ľavá tabuľka a Tabuľka oddelení je našim pravým stolom. Podľa výsledku Full Outer Join, výsledok musí obsahovať všetky n-tice z obidvoch tabuliek.

Kľúčové rozdiely medzi ľavým, pravým a úplným vonkajším spojením
- Výsledok ľavého vonkajšieho spojenia má všetky ncity ľavého stola. Podobne aj výsledok pravého vonkajšieho spojenia má všetky nódy pravého stola. A výsledok Full Outer Join má všetky n-tity z ľavého i pravého stola.
- V ľavom vonkajšom pripojení sú nuly ľavej tabuľky, ktoré nemajú zodpovedajúcu n-tiku v pravej tabuľke, rozšírené o hodnoty Null pre atribúty pravého stola. Naproti tomu je to pravý vonkajší spoj. A v plnom vonkajšom pripojení sú nuly z ľavého a pravého stola, ktoré nemajú zodpovedajúce n-tice v pravom a ľavom strome, rozšírené o NULL pre atribúty pravá a ľavá tabuľka.
záver:
Postavte sa názov tabuľky v dotaze. Keď poloha názvu tabuľky v dopyte rozhodne, či bude tabuľka považovaná za tabuľku vľavo alebo pravú tabuľku.