Priporočena, 2023

Izbira Urednika

Razlika med levo, desno in polno zunanjo povezavo

Prej smo razpravljali o razlikah med Inner Join in Outer Join, kjer smo pregledali vrste Outer Join. Outer Join je tisti, ki ohrani torke v rezultatu, ki bi bil izgubljen med operacijo Join. V tem članku; razpravljali bomo o razlikah med vrstami Outer Join. Obstajajo tri vrste zunanjih povezav; Leva zunanja povezava, desna zunanja povezava in polna zunanja povezava. Levo, desno in polno zunanjo pridružitev se razlikuje v izvedbenem načrtu in rezultatih. Lahko izpustimo zunanjo besedo levo, desno in polno zunanjo povezavo. Preglejmo razlike med levo, desno in polno zunanjo povezavo s pomočjo primerjalne tabele, prikazane spodaj.

Primerjalna tabela

Podlaga za primerjavoLevo Outer JoinDesno Zunaj Pridružite seFull Outer Join
OsnovnoVse nalepke leve tabele ostanejo v rezultatu.Vse nize desne tabele ostanejo v rezultatu.Vse nalepke z leve in desne mize ostanejo v rezultatu.
Razširitev NULLZapisi leve tabele, ki nimajo ujemajoče tipke v desni tabeli, so razširjeni z vrednostjo NULL za atribute desne tabele.Zapisi desne tabele, ki nimajo ujemajoče tipke v levi tabeli, so razširjeni z vrednostjo NULL za atribute leve tabele.
Zapisi leve in desne tabele, ki nimajo ujemajočih zaporedij v desni in levi tabeli, so razširjeni z vrednostjo NULL za atribute desnih in levih tabel.

Opredelitev levega zunanjega pridružite

Recimo, da imamo: » Tabela_A Levo Zunanje Pridružite Tabelo_B «. Torej je Table_A naša leva miza, kot se zdi na levi strani levega Outer Join operacije in Table_B je naša desna tabela.

Na začetku se notranje povezovanje uporabi na Table_A in Table_B, ki vrne vse ujemajoče nalepke iz tabele A in B.

Nato bo vrnila vse tuple iz Table_A, ki nimajo ujemajočega tuple v Table_B. Takšne, da bi bile rezultantne tuple podložene z vrednostmi NULL za atribute desne tabele.

Zato rezultat, ki ga dobimo iz levega zunanjega združenja, zadrži vse nalepke iz leve mize in se ujemajo samo z desno tabelo.

Dovolite nam, da razpravljamo o Levi zunanji pridružitvi z zgledom; spodaj sta dve tabeli, tabela učencev in tabela oddelkov .

Zdaj bomo uporabili levo zunanjo pridružitev, na tabeli študentov in oddelkov.

SELECT * FROM Študent LEFT OUTER JOIN Oddelek
ON Študent. Student_ID = Oddelek.Student_ID

V zgornji poizvedbi je tabela Študent leva miza in tabela Oddelek je desna tabela. Torej, v skladu z levo zunanjo pridružitvijo, mora imeti rezultat vse zapise iz tabele učencev, in le ujemanje tuples iz tabele oddelka.

Upoštevajte rezultat, dobljen na levi strani Outer Join; ima vse torke iz tabele za učence, skupaj z ustreznimi tipki iz tabele Študent in Oddelek. Student_id Jimmyja, Joseph Harry iz mize Student ni bil prisoten v mizi oddelka. Zato so vrednosti atributov tabele Oddelka za Jimmyja, Josepha Harryja razširjene na NULL.

Opredelitev prave zunanje povezave

Recimo, da imamo: » Table_A Desni Zunanji Pridruži Tabela_B «. Torej je Table_A naša leva miza, ki se pojavi na levi strani desnega dela Outer Join in Table_B je naša desna tabela.

Tako kot v levi zunanji povezavi se bo na začetku notranja povezava uporabila za Table_A in Table_B, ki bo vrnila vse ujemajoče nalepke iz tabele A in B.

Nato bo vrnil vse zapise iz Tabele_B, ki nimajo ujemajočega tuple v Tabeli_A. Takšne, da bi bile rezultantne tuple podložene z vrednostmi NULL za atribute leve tabele.

Zato rezultat, dobljen iz desnega zunanjega združevanja, zadrži vse nalepke desne tabele in se ujemajo le z leve tabele.

Naj na primer razpravljamo o Zunanji Zunanji Pridruži; zgoraj imamo dve tabeli, tabelo učencev in tabelo oddelkov.

Zdaj bomo uporabili desno zunanjo mizo in tabelo oddelkov.

SELECT * FROM Študent RIGHT OUTER JOIN Oddelek
ON Študent. Student_ID = Oddelek.Student_ID

V zgornji poizvedbi je tabela učencev naša leva miza in namizna tabela je naša desna miza. Glede na desno zunanjo operacijo združevanja, mora rezultat vključevati vse zapise iz tabele oddelkov in le ujemajočo točko iz učne tabele.

Opazujte rezultat, dobljen iz desnega zunanjega spoja; ima vse torke iz mize oddelka skupaj z ujemajočimi se deloma iz tabele Študent in Oddelek. Student_ID 10536 in 00954 tabele Oddelkov nista v tabeli učencev. Zato je vrednost atributa Name za Student_ID 10536 in 00954 razširjena na NULL.

Opredelitev celotne zunanje povezave

Recimo, da imamo: » Table_A Full Outer Join Table_B «. Torej je Table_A naša leva miza, kot se zdi na levi od Full Outer Join operacije in Table_B je naša desna tabela.

Polna zunanja povezava je kombinacija obeh, levega zunanjega pridružitvenega in desnega zunanjega . Prvotno uporablja notranjo povezavo na Table_A in Table_B za pridobitev ujemajočih tuples iz obeh tabel. Potem razširi tuple Table_A z NULL, ki nimajo ujemajočega tuple v Table_B. Nadalje razširja tuple iz Table_B z NULL, ki nimajo ujemajočega tuple v Table_A.

Zato Full Outer Join obdrži vse nalepke z leve in desne tabele, skupaj z zaporedjem obeh tabel.

Oglejmo si FULL Outer Join s primerom; zgoraj imamo dve tabeli, tabelo učencev in tabelo oddelkov .

Zdaj bomo uporabili polno zunanjo mizo in tabelo oddelka.

SELECT * FROM Študent FULL OUTER JOIN Oddelek
ON Študent. Student_ID = Oddelek.Student_ID

V zgornji poizvedbi je tabela učencev naša leva miza, namizna tabela pa je naša desna miza. Glede na Full Outer Join, mora rezultat vključevati vse tuples iz obeh tabel.

Opazujte rezultat, dobljen pri popolnem zunanjem spoju; ima vse zapise iz mize za študente in oddelke skupaj z ustreznimi tipki iz tabele Študent in Oddelek. Študentska študija o Jimmyju, Josephu Harryju, tj. 10026, 02256, 56362, tabele Student, ni bila prisotna v tabeli oddelka. Zato se vrednosti atributov tabele Oddelka za Jimmyja, Josepha Harryja razširijo na NULL . Student_ID 10536 in 00954 tabele Oddelkov nista prisotni v stolpcu Student_ID v tabeli učencev. Zato je atributna vrednost atributa Name za Student_ID 10536 in 00954 razširjena na NULL .

Ključne razlike med levo, desno in polno zunanjo povezavo

  1. Rezultat levega zunanjega povezovanja ima vse zapise leve tabele. Podobno je rezultat desnega zunanjega povezovanja vse zapise desne tabele. In rezultat Full Outer Join ima vse torke z leve in desne mize.
  2. V levi zunanji povezavi se zapisi leve tabele, ki nimajo ujemajoče tipke v desni tabeli, razširijo z vrednostmi Null za atribute desne tabele. Nasprotno je primer za desno zunanjo povezavo. V polni zunanji povezavi pa se nalepke iz leve in desne tabele, ki nimajo ujemajočih zaporedij v desni in levi tabeli, razširijo z NULL za atribute desne in leve tabele.

Sklep:

Poskrbite za položaje imen tabel v poizvedbi. Ker položaj imena tabele v poizvedbi določa, ali se tabela obravnava kot leva tabela ali desna tabela.

Top