Samouczek MySQL SubQuery z przykładami

Anonim

Co to są zapytania podrzędne?

Zapytanie podrzędne to zapytanie wybierające zawarte w innym zapytaniu. Wewnętrzne zapytanie wybierające jest zwykle używane do określenia wyników zewnętrznego zapytania wybierającego.

Przyjrzyjmy się składni zapytania podrzędnego -

Częstą skargą klientów w MyFlix Video Library jest mała liczba tytułów filmowych. Kierownictwo chce kupować filmy z kategorii, która ma najmniejszą liczbę tytułów.

Możesz użyć zapytania, takiego jak

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Daje wynik

Zobaczmy, jak działa to zapytanie

Powyższe jest formą zapytania podrzędnego wiersza . W takich pod-zapytaniach zapytanie wewnętrzne może dać tylko JEDEN wynik. Dopuszczalne operatory podczas pracy z podzapytaniami wierszy to [=,>, =, <=,,! =,]

Spójrzmy na inny przykład,

Załóżmy, że chcesz uzyskać imiona i nazwiska oraz numery telefonów osób, które wypożyczyły film, ale jeszcze go nie zwróciły. Gdy otrzymasz nazwiska i numer telefonu, zadzwoń do nich, aby dać przypomnienie. Możesz użyć zapytania, takiego jak

SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );

Zobaczmy, jak działa to zapytanie

W takim przypadku zapytanie wewnętrzne zwraca więcej niż jeden wynik. Powyższe jest typem podzapytania tabeli .

Do tej pory widzieliśmy dwa zapytania, zobaczmy teraz przykład potrójnego zapytania !!!

Załóżmy, że kierownictwo chce nagrodzić najlepiej płacącego członka.

Możemy uruchomić zapytanie takie jak

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

Powyższe zapytanie daje następujący wynik -

Sub-Queries Vs Joins!

W porównaniu z łączeniami zapytania podrzędne są proste w użyciu i czytelne. Nie są tak skomplikowane jak połączenia

Stąd są często używane przez początkujących SQL.

Jednak zapytania podrzędne mają problemy z wydajnością. Użycie sprzężenia zamiast zapytania podrzędnego może czasami dać nawet 500-krotny wzrost wydajności.

Mając wybór, zaleca się użycie JOIN zamiast zapytania podrzędnego.

Zapytań podrzędnych należy używać tylko jako rozwiązania rezerwowego, gdy nie można użyć operacji JOIN do osiągnięcia powyższego

Podsumowanie

  • Podzapytania to zapytania osadzone w innym zapytaniu. Osadzone zapytanie jest nazywane zapytaniem wewnętrznym, a zapytanie kontenera jest określane jako zapytanie zewnętrzne.
  • Zapytania podrzędne są łatwe w użyciu, oferują dużą elastyczność i można je łatwo podzielić na pojedyncze logiczne komponenty tworzące zapytanie, co jest bardzo przydatne podczas testowania i debugowania zapytań.
  • MySQL obsługuje trzy typy podzapytań, podzapytania skalarne, wierszowe i tabelaryczne.
  • Skalarne zapytania podrzędne zwracają tylko jeden wiersz i jedną kolumnę.
  • Zapytania podrzędne dotyczące wierszy zwracają tylko jeden wiersz, ale mogą mieć więcej niż jedną kolumnę.
  • Podzapytania tabeli mogą zwracać wiele wierszy, a także kolumn.
  • Podzapytania mogą być również używane w zapytaniach INSERT, UPDATE i DELETE.
  • W przypadku problemów z wydajnością, jeśli chodzi o pobieranie danych z wielu tabel, zdecydowanie zaleca się używanie JOIN zamiast podzapytań. Zapytań podrzędnych należy używać tylko z uzasadnionego powodu.