Podzapytania (subqueries) – definicja, zastosowanie i sposób użycia
Podzapytania, zwane także subqueries, to zapytania SQL, które są umieszczone wewnątrz innych zapytań. Działają one jak "zapytania w zapytaniach" i są używane do wyciągania danych, które następnie wykorzystuje się w głównym zapytaniu. Podzapytania są przydatne, gdy chcemy przeprowadzić operacje wymagające kilku kroków, a wynik jednego kroku jest potrzebny do kolejnego.
Jak działają podzapytania?
Podzapytanie to zapytanie znajdujące się w nawiasach wewnątrz innego zapytania SQL. Może zwrócić jedną wartość albo całą tabelę danych, które można użyć jako filtr, wartość do porównania albo kolumnę w głównym zapytaniu. Podzapytania często występują w klauzulach takich jak SELECT
, FROM
czy WHERE
.
Przykład podstawowej składni podzapytania:
SELECT kolumna1, kolumna2
FROM tabela1
WHERE kolumna3 = (SELECT MAX(kolumna3) FROM tabela2);
W tym przykładzie podzapytanie (SELECT MAX(kolumna3) FROM tabela2)
zwraca maksymalną wartość z kolumny kolumna3
w tabeli tabela2
, a główne zapytanie używa tej wartości jako filtru.
Zastosowanie podzapytań
Podzapytania można stosować na wiele sposobów, aby rozwiązać złożone problemy i uzyskać zaawansowane wyniki. Oto kilka sytuacji, w których podzapytania są szczególnie przydatne:
- Filtrowanie danych: Podzapytania mogą być używane do filtrowania wyników na podstawie innych danych. Na przykład możemy znaleźć uczniów, którzy mają najwyższą ocenę.
Przykład:
SELECT imie, nazwisko
FROM Uczniowie
WHERE ocena = (SELECT MAX(ocena) FROM Uczniowie);
W tym przykładzie podzapytanie zwraca najwyższą ocenę, a główne zapytanie wyświetla imiona i nazwiska uczniów, którzy ją otrzymali.
- Zagnieżdżone dane: Podzapytania można używać do wyciągania danych zależnych od wyników innych zapytań. Na przykład możemy znaleźć klasy, które mają więcej niż pięciu uczniów.
Przykład:
SELECT nazwa
FROM Klasy
WHERE id IN (SELECT klasa_id
FROM Uczniowie
GROUP BY klasa_id
HAVING COUNT(*) > 5);
Tutaj podzapytanie zwraca identyfikatory klas z więcej niż pięcioma uczniami, a główne zapytanie wyświetla nazwy tych klas.
- Porównanie danych: Podzapytania mogą być używane do porównywania danych w tej samej tabeli lub między tabelami. Na przykład, można znaleźć produkty, które mają cenę wyższą niż średnia.
Przykład:
SELECT nazwa, cena
FROM Produkty
WHERE cena > (SELECT AVG(cena) FROM Produkty);
Podzapytanie oblicza średnią cenę produktów, a główne zapytanie zwraca produkty, które mają cenę wyższą niż ta średnia.
Typy podzapytań
Podzapytania mogą być różnego rodzaju, w zależności od sposobu użycia:
- Podzapytania skalarne: Zwracają jedną wartość i są używane tam, gdzie potrzebujemy pojedynczego wyniku, np. w klauzuli
WHERE
. - Podzapytania zagnieżdżone: Mogą zwracać wiele wartości i są używane np. w klauzuli
IN
. - Podzapytania w klauzuli
FROM
: Czasami podzapytania są używane jako "wirtualne tabele", które mogą być dalej przetwarzane w głównym zapytaniu.
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |