w SQL Server czasami konieczne jest pobranie, oprócz pasujących wierszy, niepasowanych wierszy z jednej lub obu tabel. Taka operacja nazywana jest złączem zewnętrznym.
przykłady 1 i 2 pokazują różnicę między naturalnym połączeniem a odpowiadającym mu złączem zewnętrznym. (Wszystkie przykłady w tej sekcji używają tabeli employee_enh.,)
przykład 1
uzyskaj pełne dane wszystkich pracowników, w tym lokalizację ich działu, którzy mieszkają i pracują w tym samym mieście:
wynik jest następujący:
przykład 1 wykorzystuje naturalne połączenie do wyświetlania wynikowy zestaw wierszy. Jeśli chcesz poznać wszystkie inne istniejące miejsca zamieszkania pracowników, musisz użyć (lewej) zewnętrznej łącznika. Jest to tzw. LEFT outer join, ponieważ zwracane są wszystkie wiersze z tabeli po lewej stronie operatora, niezależnie od tego, czy mają pasujący wiersz w tabeli po prawej., Innymi słowy, jeśli w tabeli po prawej stronie nie ma pasujących wierszy, zewnętrzne połączenie nadal zwróci wiersz z tabeli po lewej stronie, z NULL w każdej kolumnie drugiej tabeli (patrz przykład 2). Silnik bazy danych używa operatora LEFT OUTER JOIN do określenia LEFT outer join.
prawe złącze zewnętrzne jest podobne, ale zwraca wszystkie wiersze tabeli po prawej stronie symbolu. Silnik bazy danych używa operatora RIGHT OUTER JOIN, aby określić właściwe zewnętrzne join.,
przykład 2
uzyskaj pełne dane wszystkich pracowników, w tym lokalizację ich działu, dla wszystkich miast, które są tylko miejscem zamieszkania lub zarówno miejscem zamieszkania, jak i pracy pracowników:
wynik jest następujący:
widać, że gdy nie ma pasującego wiersza w tabeli po prawej stronie (departament, w tym przypadku), lewe zewnętrzne połączenie nadal zwraca wiersze z tabeli po lewej stronie (employee_enh), a kolumny drugiej tabeli są wypełnione wartościami null., Przykład 3 pokazuje użycie prawej operacji połączenia zewnętrznego.
przykład 3
uzyskaj pełne informacje o wszystkich działach, a także wszystkich miejscach zamieszkania ich pracowników, dla wszystkich miast, które są siedzibą działu lub miejscem zamieszkania i pracy pracownika:
wynik jest następujący:
oprócz lewego i prawego złączenia zewnętrznego, istnieje również pełne złączenie zewnętrzne, które jest zdefiniowane jako połączenie lewego i prawego złączenia zewnętrznego. Innymi słowy, wszystkie wiersze z obu tabel są reprezentowane w zbiorze wyników., Jeżeli w jednej z tabel nie ma odpowiedniego wiersza, zwracane są jego kolumny z wartościami NULL. Operacja ta jest określona za pomocą operatora pełnego połączenia zewnętrznego.
każda operacja połączenia zewnętrznego może być symulowana za pomocą operatora UNION plus Funkcja NOT EXISTS. Przykład 4 jest odpowiednikiem przykładu z lewym zewnętrznym złączem (przykład 2).,
przykład 4
uzyskaj pełne dane wszystkich pracowników, w tym lokalizację ich działu, dla wszystkich miast, które są tylko miejscem zamieszkania lub zarówno miejscem zamieszkania, jak i pracy pracowników:
pierwsze oświadczenie SELECT w związku określa naturalne połączenie tabel employee_enh i department z kolumnami join miejsce zamieszkania i lokalizacja. Ta instrukcja SELECT pobiera wszystkie miasta, które są jednocześnie miejscami zamieszkania i pracy każdego pracownika., Drugie polecenie SELECT w związku pobiera dodatkowo wszystkie wiersze z tabeli employee_enh, które nie pasują do warunku w naturalnym połączeniu.