Podzapytanie SQL Dołącz do zapytania zewnętrznego

Podzapytanie Sql Dolacz Do Zapytania Zewnetrznego



Jeśli chodzi o pracę z relacyjnymi bazami danych, musisz opanować manipulowanie i łączenie zapytań w celu wykonywania żądanych zadań. Dlatego każdy silnik relacyjnej bazy danych implementuje swój smak języka SQL, starając się zapewnić swoim użytkownikom wyjątkowe funkcje, wydajność i łatwość użytkowania.

Jedną z najpotężniejszych funkcji języka SQL są podzapytania. Podzapytania to zestaw zagnieżdżonych zapytań w ramach większego i bardziej złożonego zapytania. Podzapytania umożliwiają pobieranie danych lub wykonywanie bardziej złożonych operacji jako pojedynczej jednostki.







Możemy użyć podzapytań do filtrowania danych, sortowania, agregacji w wielu tabelach i nie tylko.



Jednak inna funkcja, która jest ukryta w podzapytaniach SQL, jest znana jako łączenia podzapytań. Są one podobne do podzapytań; zamiast tego są to sprzężenia, które umożliwiają użycie podzapytań w ramach zapytania zewnętrznego w celu połączenia tabel.



Jeśli kręci ci się w głowie, nie martw się, ponieważ łączenie podzapytań może być trudne do opanowania, zwłaszcza na początku. Jednak w tym samouczku podjęto próbę podzielenia sprzężeń podzapytań w elementarnych krokach bez pozostawiania zbyt wiele przypadkowi.





Pamiętaj, że zakładamy, że nie jesteś nowicjuszem w SQL, SQL Joins, SQL Subqueries itp. Jeśli jednak tak, sprawdź nasze samouczki na te tematy, aby dowiedzieć się więcej.

Opanuj zewnętrzne sprzężenia SQL

Jeśli chcesz zrozumieć, jak pracować ze sprzężeniami podzapytań, nauczenie się, jak pracować ze sprzężeniami zewnętrznymi, jest kluczowym czynnikiem.



Jeśli nie jesteś zaznajomiony, zewnętrzne sprzężenie SQL umożliwia pobranie wszystkich wierszy z jednej tabeli i pasujących wierszy z drugiej tabeli. Jest to trochę bardziej złożone, w tym lewe łączenie zewnętrzne, prawe łączenie zewnętrzne, pełne łączenie zewnętrzne itp.

W lewym zewnętrznym sprzężeniu SQL zapytanie zwraca wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Zapytanie zawiera wartości NULL w wynikowych kolumnach, jeśli w prawej tabeli nie ma pasujących wierszy.

W przypadku prawego sprzężenia zewnętrznego zapytanie zwraca wszystkie wiersze z prawej tabeli, ale tylko pasujące wiersze z lewej tabeli. Podobnie zapytanie zawiera wartości NULL, jeśli nie ma pasujących wierszy z lewej tabeli.

Wreszcie mamy pełne sprzężenie zewnętrzne. To sprzężenie zwraca wszystkie wiersze z prawej i lewej tabeli oraz wartości NULL dla wszelkich niepasujących rekordów.

Łączenia podzapytań SQL

Teraz, gdy rozumiemy podzapytania SQL, porozmawiajmy o sprzężeniach podzapytań. Łączenia podzapytań pozwalają nam używać podzapytań w zewnętrznym zapytaniu do łączenia tabel.

Jeśli pytasz, czy to jest to? Tak, to wszystko, co robią łączenia podzapytań.

Aby lepiej to zademonstrować, weźmy następujący przykład składni, który pokazano poniżej:

WYBIERAĆ *
Z tabeli 1
LEWE DOŁĄCZENIE ZEWNĘTRZNE (
WYBIERZ kolumna1, kolumna2
Z tabeli2
) AS podzapytanie
ON tabela1.kolumna3 = podzapytanie.kolumna1;


W poprzedniej składni wybieramy wszystkie kolumny z tabeli pierwszej, używając lewego sprzężenia zewnętrznego, aby połączyć ją z podzapytaniem. Rolą podzapytania jest pobranie zdefiniowanych kolumn z Tabeli 2. Następnie łączymy je z Tabelą 1 pod warunkiem, że kolumna 2 z Tabeli 1 i kolumna 1 z podzapytania.

Praktyczny przykład:

Teoretycznie wydaje się to mniej intuicyjne, ale weźmy rzeczywisty scenariusz, biorąc bazę danych Sakila.

Załóżmy, że chcemy pobrać listę wszystkich filmów w bazie danych wraz z odpowiadającymi im językami. Języki filmów są przechowywane w tabeli języków, a nazwy filmów są przechowywane w tabeli filmów.

Jednak tabela filmów ma klucz obcy o nazwie kolumna „language_id” z tabeli języków. Dlatego możemy użyć sprzężenia podzapytania z lewym sprzężeniem zewnętrznym, aby połączyć ze sobą dwie tabele, jak pokazano w poniższym zapytaniu:

WYBIERZ f.tytuł, l.nazwa AS język
Z filmu f
LEWE DOŁĄCZENIE ZEWNĘTRZNE (
WYBIERZ identyfikator_języka, nazwa
Z języka
) AS l
ON f.id_języka = l.id_języka;


W poprzednim przykładowym zapytaniu wybieramy kolumnę tytułu z tabeli filmów i kolumnę nazwy z tabeli języków.

Następnie używamy podzapytania, aby wybrać kolumnę language_id i name z tabeli języków. Kolejnym krokiem jest połączenie go z tablicą film pod warunkiem, że id_języka z tabeli film jest równe id_języka z tabeli języków.

Aby upewnić się, że wszystkie filmy zostaną uwzględnione w wyniku, musimy użyć lewego sprzężenia zewnętrznego, które składa się ze wszystkich wyników z lewej tabeli, która w tym przypadku jest tabelą filmów.

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


Możemy również zrobić to samo z prawym złączeniem zewnętrznym. Składnia jest następująca:

WYBIERAĆ *
Z tabeli 1
PRAWE ŁĄCZENIE ZEWNĘTRZNE (
WYBIERZ kolumna1, kolumna2
Z tabeli2
) AS podzapytanie
ON tabela1.kolumna3 = podzapytanie.kolumna1;


Działa to podobnie, ale obejmuje wszystkie rekordy z prawej tabeli, nawet jeśli nie ma pasujących rekordów.

Przydatne rzeczy, które warto wiedzieć

Dobrze jest zrozumieć, że chociaż łączenia podzapytań są niezwykle przydatne i mogą zoptymalizować przepływ pracy, używaj ich ostrożnie.

Na przykład unikaj używania sprzężeń podzapytań z dużym zestawem danych. Dzieje się tak, ponieważ mogą zwracać obszerne rekordy, które mogą mieć wpływ na wydajność bazy danych.

Rozważ użycie narzędzi do analizy zapytań przed wykonaniem jakichkolwiek połączeń podzapytań.

Wniosek

W tym samouczku omówiono podstawy pracy z zapytaniami podrzędnymi i sprzężeniami podzapytań w języku SQL. Pod koniec tego samouczka wiesz już, jak pracować ze sprzężeniami podzapytań, dlaczego może być konieczne ich użycie, oraz znajdziesz praktyczny przykład tego, jak mogą one pomóc w przepływie pracy.