Wykres porównania
Podstawa do porównania | Left Outer Join | Prawe zewnętrzne połączenie | Pełne połączenie zewnętrzne |
---|---|---|---|
Podstawowy | Wszystkie 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 NULL | Krotki 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.
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.
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.
Kluczowe różnice między lewymi, prawymi i pełnymi zewnętrznymi łączeniami
- 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.
- 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ą.