Złącze zewnętrzne SQL

Zlacze Zewnetrzne Sql



Nie trzeba dodawać, że łączenie jest jedną z najbardziej rozpoznawalnych cech relacyjnych baz danych. Złączenia pozwalają nam łączyć dane z jednej lub większej liczby tabel w oparciu o powiązany warunek w celu utworzenia spójnej operacji na danych.

W języku SQL istnieją różne typy złączeń, a każdy z nich charakteryzuje się unikalnym sposobem obsługi danych z uczestniczących tabel lub zestawu wynikowego. Jednym z najpowszechniejszych typów złączeń w SQL jest złącze OUTER JOIN.







OUTER JOIN w SQL pobiera wszystkie pasujące wiersze z zaangażowanych tabel, a także niedopasowane wiersze z jednej lub obu tabel. Przydaje się, gdy masz do czynienia z tabelami zawierającymi wartości NULL lub brakujące zestawy.



Przyjrzyjmy się bliżej, co robią te łączenia, jak działają i jak możemy ich używać w bazie danych SQL.



Wymagania:

W tym samouczku będziemy pracować z MySQL 8.0 i korzystać z przykładowej bazy danych Sakila. Możesz jednak skorzystać z dowolnego innego zbioru danych, który uznasz za odpowiedni.





Rodzaje połączeń zewnętrznych

W SQL istnieją trzy główne typy złączeń zewnętrznych. Te typy POŁĄCZEŃ ZEWNĘTRZNYCH obejmują:

  1. Lewe POŁĄCZENIA ZEWNĘTRZNE

  2. W przypadku LEFT OUTER JOINS, złączenie pobiera wszystkie wiersze z lewej tabeli i tylko pasujące wiersze z prawej tabeli. Jeśli w prawej tabeli nie ma pasujących wierszy, połączenie zwraca wartości NULL dla kolumn w prawej tabeli.



  3. Prawe POŁĄCZENIA ZEWNĘTRZNE

  4. Przypomina to PRAWE ŁĄCZENIE ZEWNĘTRZNE. Jednakże pobiera wszystkie wiersze z prawej tabeli, ale tylko pasujące wiersze z lewej tabeli. Jeśli w lewej tabeli nie ma pasujących wierszy, złączenie zawiera wartości NULL dla kolumn w lewej tabeli.

  5. PEŁNE POŁĄCZENIA ZEWNĘTRZNE

  6. Na koniec mamy PEŁNE POŁĄCZENIA ZEWNĘTRZNE. Ten typ złączenia łączy zewnętrzne złączenia PRAWY i LEWY. W rezultacie złączenie pobiera wszystkie wiersze, jeśli występuje dopasowanie w lewej lub prawej tabeli. Jeśli nie ma dopasowania, łączenie zwraca wartości NULL dla kolumn tabeli bez dopasowania.

Składnia SQL OUTER JOIN

Poniżej przedstawiono składnię OUTER JOIN SQL. Warto jednak pamiętać, że składnia może się nieznacznie różnić w zależności od docelowego silnika bazy danych.

Poniżej znajduje się ogólna struktura:

WYBIERZ kolumny
Z tabeli 1
[LEWO | PRAWO | FULL] OUTER JOIN tabela2
ON tabela1.nazwa_kolumny = tabela2.nazwa_kolumny;

Składnia OUTER JOIN w SQL jest dość oczywista.

Przykłady:

Przyjrzyjmy się przykładowemu zastosowaniu różnych typów złączeń zewnętrznych w języku SQL.

Jak wspomnieliśmy, do demonstracji wykorzystamy przykładową bazę danych Sakila. W tym przypadku korzystamy z tabel „klient” i „płatność”.

Przykład 1: LEWE POŁĄCZENIE ZEWNĘTRZNE

Zacznijmy od OUTER JOIN. Załóżmy, że chcemy pobrać wszystkie informacje o kliencie wraz z informacjami o płatności, jeśli są dostępne.

To sprawia, że ​​LEFT OUTER JOIN ma zastosowanie, ponieważ potrzebujemy wszystkich informacji o kliencie (po lewej) i informacji o płatności, jeśli są dostępne (po prawej).

Jeśli klient nie dokonał żadnej płatności, połączenie pokaże wartości NULL w kolumnach związanych z płatnością.

Przykład jest następujący:

WYBIERAĆ
c.identyfikator_klienta,
c.imię,
c.nazwisko,
p.kwota,
p.data_płatności
Z
klient C
Płatność LEWY ZEWNĘTRZNY DOŁĄCZENIE str
NA
c.customer_id = p.customer_id;

W podanym zapytaniu uwzględniamy kolumny „customer_id”, „first_name” i „last_name” z tabeli „customer”. Podajemy również kwotę i „data_płatności” z tabeli „płatność”.

Następnie wykonujemy LEFT OUTER JOIN pomiędzy tabelami „customer” i „payment” w oparciu o „customer_id”.

Są to wszyscy klienci (niezależnie od tego, czy dokonali płatności, czy nie) wraz ze szczegółami płatności (jeśli istnieją).

Przykładowe dane wyjściowe są następujące:

Przykład 2: PRAWE POŁĄCZENIE ZEWNĘTRZNE

Przejdźmy teraz do PRAWEGO ŁĄCZENIA ZEWNĘTRZNEGO. Załóżmy, że chcemy uwzględnić w tym przypadku wszystkie informacje o płatności i powiązanym z nią kliencie, jeśli taki istnieje.

W takim przypadku, jeśli klient dokona płatności, przy łączeniu zostaną wyświetlone dane tego klienta. Jeśli istnieje płatność bez powiązanego klienta, w kolumnach związanych z klientem zostaną wyświetlone wartości NULL.

WYBIERAĆ
c.identyfikator_klienta,
c.imię,
c.nazwisko,
p.kwota,
p.data_płatności
Z
klient C
Płatność PRAWEGO ŁĄCZENIA ZEWNĘTRZNEGO str
NA
c.customer_id = p.customer_id;

Wynikowy zestaw wygląda następująco:

Przykład 3: PEŁNE POŁĄCZENIE ZEWNĘTRZNE

Z drugiej strony, FULL OUTER JOIN pobiera wszystkie informacje o kliencie i płatności. Obejmuje to wszystkich klientów i wszystkie płatności i pokazuje wartości NULL tam, gdzie nie ma dopasowania między tabelami.

WYBIERAĆ
c.identyfikator_klienta,
c.imię,
c.nazwisko,
p.kwota,
p.data_płatności
Z
klient C
Płatność PEŁNEGO POŁĄCZENIA ZEWNĘTRZNEGO str
NA
c.customer_id = p.customer_id;

Warto pamiętać, że MySQL nie obsługuje natywnie FULL OUTER JOIN. Musisz wykonać trochę magii jiujitsu za pomocą LEWEGO JOIN, UNION i PRAWEGO JOIN. Dość irytujące, możemy dodać.

Wniosek

W tym samouczku dowiedzieliśmy się wszystkiego o ŁĄCZENIACH ZEWNĘTRZNYCH. Dowiedzieliśmy się, czym jest OUTER JOIN w SQL, rodzaje OUTER JOINS i przykłady wykorzystania tego typu OUTER JOINS.