1
|
- podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i
FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania
hierarchiczne
|
2
|
- Podzapytanie jest poleceniem SELECT zagnieżdżonym w innym poleceniu
SELECT. Podzapytanie może wystąpić wszędzie tam, gdzie system spodziewa
się zbioru wartości, czyli w klauzulach SELECT, FROM, WHERE, HAVING.
- Ogólny format zagnieżdżania zapytań:
- Operatorem może być:
- = <> < > <= >=
- IN
- ANY, ALL
|
3
|
- Wyznacz pracownika zarabiającego najmniej w instytucie
- Wyznacz najgorzej zarabiającego asystenta
|
4
|
- Wyświetl nazwiska i płace pracowników, zatrudnionych w zespołach o
nazwach "ADMINISTRACJA" lub "ALGORYTMY".
|
5
|
- Wyświetl nazwiska najgorzej zarabiających pracowników w każdym zespole
|
6
|
- Operator ANY
- stosowany z operatorami logicznymi, warunek jest prawdziwy jeśli jest
spełniony dla jakiejkolwiek wartości zwróconej przez podzapytanie.
- Operator ALL
- stosowany z operatorami logicznymi, warunek jest prawdziwy jeśli jest
spełniony dla wszystkich wartości zwróconych przez podzapytanie.
|
7
|
- Lista atrybutów w klauzuli SELECT podzapytania jest niezgodna z listą
atrybutów w warunku:
- Podzapytanie zwraca więcej niż jeden wiersz a w warunku użyto operatora
przewidzianego do porównywania wartości skalarnych:
|
8
|
- Wyświetl te zespoły, w których średnia płaca podstawowa jest większa niż
średnia płaca w całym instytucie.
|
9
|
- Wyświetlić nazwiska i płace pracowników, zarabiających więcej niż wynosi
maksymalna płaca w zespole o nazwie ALGORYTMY
|
10
|
- W podzapytaniu nie używamy klauzuli ORDER BY, klauzula ORDER BY może
wystąpić wyłącznie jako ostatnia klauzula najbardziej zewnętrznego
zapytania.
- Liczba oraz typy atrybutów występujących w klauzuli SELECT podzapytania
musi być zgodna z liczbą i typem atrybutów użytych w warunku zapytania
zewnętrznego.
- Podzapytania są zawsze wykonywane w kolejności od najgłębiej
zagnieżdżonego do najbardziej zewnętrznego.
- Podzapytania mogą się znaleźć w dowolnym miejscu w klauzuli WHERE.
|
11
|
- Cechy
- Podzapytanie skorelowane jest wykonywane dla każdej krotki przeglądanej
przez zapytanie nadrzędne
- Podzapytanie skorelowane operuje na wartościach atrybutów przekazanych
przez zapytanie nadrzędne
- Podzapytanie skorelowane zawsze posiada odwołanie do atrybutu zapytania
nadrzędnego
|
12
|
- Polecenie SELECT z podzapytaniem skorelowanym wykonywane jest
następująco:
- pobranie krotki Kn przez zapytanie nadrzędne
- wykonanie podzapytania na podstawie wartości z krotki Kn
- zaakceptowanie bądź odrzucenie krotki Kn
- pobranie kolejnej krotki Kn+1 przez zapytanie nadrzędne i
powtórzenie kroków 2-4
- Przykład: Wyświetl nazwiska pracowników zarabiających powyżej średniej
dla swojego zespołu.
|
13
|
|
14
|
- Operatory EXISTS, NOT EXISTS
- Operator zwraca wartość TRUE jeżeli podzapytanie zwraca jakąkolwiek
wartość. Podzapytanie nie musi zwracać wartości z bazy danych, równie
dobrze może zwracać dowolny literał.
|
15
|
|
16
|
- Wynik podzapytania może być wykorzystany jako wejściowy zbiór danych
dla innego zapytania. Podzapytanie może się znaleźć w klauzuli FROM,
zamiast nazwy relacji. W podzapytaniu w klauzuli FROM dopuszczalne jest
użycie klauzuli ORDER BY.
|
17
|
|
18
|
|