Zalecane, 2019

Wybór Redakcji

Różnica między lewą, prawą i pełną zewnętrzną łącznością

Wcześniej omawialiśmy różnice między Inner Join i Outer Join, gdzie omówiliśmy rodzaje zewnętrznego łączenia. External Join to ten, który zachowuje krotki w wyniku, który zostałby utracony podczas operacji Join. W tym artykule; omówimy różnice między typami zewnętrznego łączenia. Istnieją trzy rodzaje zewnętrznego łączenia; Left Outer Join, Right Outer Join i Full Outer Join. Lewe, Prawe i Pełne zewnętrzne połączenie różni się planem wykonania i uzyskanymi wynikami. Możemy pominąć słowo Zewnętrzne od lewej, prawej i pełnej zewnętrznej. Przyjrzyjmy się różnicom między lewą, prawą i pełną zewnętrzną Połącz, korzystając z poniższego wykresu porównawczego.

Wykres porównania

Podstawa do porównaniaLeft Outer JoinPrawe zewnętrzne połączeniePełne połączenie zewnętrzne
PodstawowyWszystkie krotki lewego stołu pozostają w wyniku.Wszystkie krotki prawego stołu pozostają w wyniku.Wszystkie krotki z lewej i prawej tabeli pozostają w wyniku.
Rozszerzenie NULLKrotki lewej tabeli, które nie mają odpowiadającej krotki w prawej tabeli, są rozszerzone o wartość NULL dla atrybutów prawej tabeli.Krotki prawego stołu, które nie mają pasującej krotki w lewej tabeli, są rozszerzone o wartość NULL dla atrybutów lewej tabeli.
Krotki lewej i prawej tabeli, które nie mają pasujących krotek w prawej i lewej tabeli, są rozszerzone o wartość NULL dla atrybutów prawej i lewej tabeli.

Definicja Left Outer Join

Załóżmy, że mamy " Table_A Left Outer Join Table_B ". Tak więc Table_A jest naszym lewym tabelą, jak się wydaje po lewej stronie operacji Left Outer Join, a Table_B jest naszą właściwą tabelą.

Początkowo połączenie wewnętrzne zostanie zastosowane w Table_A i Table_B, które zwrócą całą dopasowaną krotkę z tabeli A i B.

Następnie zwróci wszystkie krotki z Table_A, które nie mają pasującej krotki w Table_B. Taki, że wynikowe krotki będą wypełnione wartościami NULL dla atrybutów prawej tabeli.

Stąd wynik uzyskany z Left Outer Join zachowuje wszystkie krotki z lewego stołu i tylko pasujące krotki z prawego stołu.

Omówmy Left Outer Join z przykładem; mamy dwie tabele poniżej, tabelę studentów i tabelę działu .

Teraz zastosujemy Left Outer Join na stole dla studentów i działu.

SELECT * FROM Oddział LEFT OUTER dla studentów
ON Student. Student_ID = Department.Student_ID

W powyższym zapytaniu tabela Student jest lewą tabelą a tabela jest właściwą tabelą. Tak więc, zgodnie z Left Outer Join, wynik musi zawierać wszystkie krotki z tabeli Student i tylko pasujące krotki z tabeli Departamentu.

Obserwuj wynik uzyskany z Left Outer Join; ma wszystkie krotki z tabeli Student wraz z odpowiednimi krotkami z tabeli Uczeń i Wydział. Student_id z Jimmy'ego, stół Josepha ze Studenta nie był obecny w tabeli Departamentu. W związku z tym wartości atrybutów tabeli działu dla Jimmy'ego, Josepha Harry'ego zostały rozszerzone na NULL.

Definicja prawa zewnętrznego łączenia

Załóżmy, że mamy " Table_A Right Outer Join Table_B ". Tak więc Table_A jest naszym lewym tabelą, tak jak wygląda na lewo od operacji Right Outer Join, a Table_B jest naszym prawym stołem.

Podobnie jak w Left Outer Join, początkowo połączenie wewnętrzne będzie zastosowane w Table_A i Table_B, które zwrócą całą dopasowaną krotkę z tabeli A i B.

Następnie zwróci wszystkie krotki z Table_B, które nie mają pasującej krotki w Table_A. Taki, że wynikowe krotki będą wypełnione wartościami NULL dla atrybutów lewej tabeli.

Dlatego wynik uzyskany z prawego sprzężenia zewnętrznego zachowuje wszystkie krotki z prawego stołu i tylko pasujące krotki z lewego stołu.

Porozmawiajmy o Right Outer Join z przykładem; powyżej mamy dwie tabele, tabelę studentów i tabelę działu.

Teraz zastosujemy tabelę Right Outer Join to Student i Department.

WYBIERZ * Z ZAKRESU PROJEKTOWEGO PRAWY ZEWNĘTRZNY DOŁĄCZ
ON Student. Student_ID = Department.Student_ID

W powyższym zapytaniu tabela ucznia to nasza lewa tabela, a tabela działu to nasza właściwa tabela. Zgodnie z operacją Prawidłowe podłączenie zewnętrzne, wynik musi zawierać wszystkie krotki z tabeli działu i tylko pasujące krotki z tabeli uczniów.

Obserwuj wynik uzyskany z prawego sprzężenia zewnętrznego; ma wszystkie krotki z tabeli Departamentu wraz z odpowiednimi krotkami z tabeli Uczeń i Wydział. Student_ID 10536 i 00954 tabeli działu nie są obecne w tabeli uczniów. Dlatego wartość atrybutu Name dla Student_ID 10536 i 00954 została rozszerzona na NULL.

Definicja pełnego połączenia zewnętrznego

Załóżmy, że mamy " Table_A Full Outer Join Table_B ". Tak więc Table_A jest naszym lewym stolikiem, jak się wydaje po lewej stronie operacji Full Outer Join, a Table_B jest naszą właściwą tabelą.

Full Outer Join to połączenie obu lewych zewnętrznych połączeń i prawych zewnętrznych połączeń . Początkowo stosuje sprzężenie wewnętrzne w Table_A i Table_B w celu pobrania pasujących krotek z obu tabel. Następnie rozszerza te krotki Table_A o NULL, które nie mają pasującej krotki w Table_B. Co więcej, rozszerza te krotki z Table_B o NULL, które nie mają pasującej krotki w Table_A.

Stąd też Full Outer Join zachowuje wszystkie krotki z lewej i prawej tabeli, wraz z odpowiednimi krotkami obu tabel.

Omówmy FULL Outer Join z przykładem; mamy dwie tabele powyżej, tabelę studentów i tabelę działu .

Teraz zastosujemy pełne połączenie zewnętrzne do tabeli ucznia i tabeli działu.

SELECT * FROM Dział FULL OUTER DOŁĄCZ Dział
ON Student. Student_ID = Department.Student_ID

W powyższym zapytaniu tabela ucznia jest naszym lewym tabelą, a tabela działu to nasza właściwa tabela. Zgodnie z Full Outer Join, wynik musi zawierać wszystkie krotki z obu tabel.

Obserwuj wynik uzyskany z pełnego sprzężenia zewnętrznego; ma wszystkie krotki z tabeli Uczeń i Departament wraz z odpowiednimi krotkami z tabeli Uczeń i Wydział. Identyfikator ucznia Jimmy'ego, Josepha Harry'ego, tj. Odpowiednio, 10026, 02256, 56362, tabeli uczniów, nie był obecny w tabeli działu. Dlatego wartości atrybutów tabeli działu dla Jimmy'ego, Josepha Harry'ego są rozszerzone do NULL . Student_ID 10536 i 00954, z tabeli Dział, nie są obecne w kolumnie Student_ID tabeli Ucznia. Dlatego wartość atrybutu Name dla Student_ID 10536 i 00954 została rozszerzona na NULL .

Kluczowe różnice między lewymi, prawymi i pełnymi zewnętrznymi łączeniami

  1. Wynik Left Outer Join ma wszystkie krotki lewego stołu. Podobnie wynik Right Outer Join ma wszystkie krotki prawego stołu. Wynik Full Outer Join zawiera wszystkie krotki z lewego i prawego stołu.
  2. W Left Outer Join krotki lewego stołu, które nie mają pasującej krotki w prawej tabeli, są rozszerzane o wartości Null dla atrybutów prawej tabeli. Przeciwny jest przypadek Right Outer Join. W pełnym złączeniu zewnętrznym krotki z lewej i prawej tabeli, które nie mają pasujących krotek w tabelach prawej i lewej, są odpowiednio rozszerzone o NULL dla atrybutów odpowiednio prawego i lewego stołu.

Wniosek:

Zadbaj o pozycje nazw tabel w zapytaniu. Ponieważ pozycja nazwy tabeli w zapytaniu decyduje o tym, czy tabela zostanie uznana za tabelę lewą lub prawą.

Top