Podzapytania SQL to cenne funkcje, które pozwalają nam osadzić jedno zapytanie w innym, co zwiększa znaczenie pobierania danych i manipulowania nimi w skomplikowany sposób. Służy do konfigurowania tymczasowych tabel lub wyników pośrednich, które będą później wykorzystywane przez zapytanie zewnętrzne.
Podzapytanie w klauzuli FROM
Klauzuli FROM można użyć do określenia wyrażenia podzapytania w języku SQL. Relacja wytworzona przez podzapytanie jest następnie wykorzystywana jako nowa relacja, na której zapytanie zewnętrzne jest wykorzystywane do dalszych operacji. Podzapytania wFROMKlauzula jest używana, gdy musimy utworzyć tymczasowy zbiór danych, który nie istnieje w żadnej fizycznej tabeli. Może to być niezwykle pomocne podczas pracy ze złożonymi zbiorami danych.
Oracle SQL nie jest równy
Zmienne korelacji z tabel, do których odwołują się klauzula FROM zapytania zewnętrznego, nie mogą być użyte bezpośrednio w podzapytaniach klauzuli FROM. Poniżej podano dwie składnie użycia podzapytania w klauzuli FROM używanej w różnych scenariuszach.
1. Proste podzapytanie wFROMKlauzula:
WYBIERZ kolumnę1 kolumnę2
FROM (WYBIERZ kolumna_x AS C1 kolumna_y FROM tabela WHERE warunek) AS podzapytanie_tabela
GDZIE warunek_zewnętrzny;
2. Podzapytanie wFROMKlauzula zJOIN:
WYBIERZ kolumnę1 kolumnę2
FROM (WYBIERZ kolumnę_x AS C1 kolumna_y FROM tabela WHERE PREDICATE_X) AS tabela2
formater ciągówDOŁĄCZ do tabeli1 NA table2.some_column = table1.some_column
GDZIE PREDYKAT;
Parametry:
- Podzapytanie : Wewnętrzne zapytanie ujęte w nawiasy. Pobiera dane, które będą działać jako tabela tymczasowa.
- Alias : Podzapytanie musi mieć podany alias (
subquery_table), do którego ma się odwoływać zewnętrzne zapytanie. - Zapytanie zewnętrzne : Zapytanie zewnętrzne może następnie pracować z tabelą tymczasową utworzoną przez podzapytanie stosujące filtry lub wykonujące dalsze operacje.
Jak działają podzapytania w klauzuli FROM
- Ocena podzapytania : Podzapytanie w klauzuli from jest najpierw oceniane, a następnie wyniki oceny są zapisywane w nowej relacji tymczasowej.
- Zapytanie zewnętrzne : Po wykonaniu podzapytania i zwróceniu zbioru danych, zewnętrzne zapytanie jest oceniane, wybierając tylko te krotki z tymczasowej relacji, które spełniają predykat w klauzuli Where zapytania zewnętrznego.
Przykład użycia podzapytania w klauzuli FROM
Omówmy kilka przykładów z życia wziętych, aby zrozumieć, jak podzapytania w klauzuli FROM działają w praktyce. Tutaj mamy dwie tabele Instruktor tabela zawierająca informacje o instruktorach, w tym o ich zarobkach i dziale. Inny jest Dział tabela zawierająca informacje o różnych działach, w tym o budżecie działu.
Instruktor Tabela
| Identyfikator instruktora | Nazwa | Dział | Wynagrodzenie |
|---|---|---|---|
| 44547 | Kowal | Informatyka | 95000 |
| 44541 | Rachunek | Elektryczny | 55000 |
| 47778 | Sam | Humanistyka | 44000 |
| 48147 | Eryk | Mechaniczny | 80000 |
| 411547 | Balsam | Technologia informacyjna | 65000 |
| 48898 | Jena | Cywilny | 50000 |
Dział Tabela
| Nazwa działu | Budżet |
|---|---|
| Informatyka | 100 000 |
| Elektryczny | 80000 |
| Humanistyka | 50000 |
| Mechaniczny | 40000 |
| Technologia informacyjna | 90000 |
| Cywilny | 60000 |
Przykład 1: Znajdź wszystkich profesorów, których pensja jest większa niż średni budżet wszystkich wydziałów.
W tym przykładzie wykorzystamy podzapytanie w klauzuli FROM do obliczenia średniego budżetu wszystkich działów, a następnie dokonamy porównania z pensjami instruktorów.
ipconfig na Ubuntu
Zapytanie:
wiosna i wiosna mvc
SELECT I.InstructorID I.Name I.Department I.Salary
FROM (SELECT AVG(Budget) AS averageBudget FROM Department) AS BUDGET
Instructor AS I
WHERE I.Salary > BUDGET.averageBudget;
Wyjście
| Identyfikator instruktora | Nazwa | Dział | Wynagrodzenie |
|---|---|---|---|
| 44547 | Kowal | Informatyka | 95000 |
| 48147 | Eryk | Mechaniczny | 80000 |
Wyjaśnienie:
- Średni budżet wszystkich działów relacji departamentu wynosi 70000.
- Erik i Smith są jedynymi instruktorami w relacji instruktorskiej, których pensja przekracza 70000 i dlatego są obecni w relacji wyjściowej.
Po co używać podzapytań w klauzuli FROM?
Stosowanie podzapytań w klauzuli FROM ma wiele zalet, jak podano poniżej:
- Uproszczenie : Mogą uprościć złożone zapytania, dzieląc je na mniejsze, łatwiejsze do zarządzania części. Nie musisz jawnie tworzyć tabel tymczasowych w swojej bazie danych.
- Poprawiona czytelność : użycie podzapytań w klauzuli FROM sprawia, że zapytanie jest bardziej czytelne, ponieważ dzieli > Elastyczność : Podzapytania umożliwiają wykonywanie operacji, które w innym przypadku byłyby niewygodne, np. agregację lub filtrowanie w odniesieniu do innych zbiorów danych, bez konieczności tworzenia tabel pośrednich.
Wniosek
Podzapytania w klauzuli FROM umożliwiają nam zdefiniowanie tymczasowe zestawy wyników które mogą być wykorzystywane przez zapytania zewnętrzne. Ułatwiają złożone operacje SQL, zwiększają czytelność zapytań i zapewniają elastyczność w filtrowaniu i agregowaniu danych. Umiejętność wykorzystania podzapytań w klauzuli FROM jest podstawową umiejętnością każdego praktyka SQL, szczególnie gdy ma się do czynienia ze złożonymi bazami danych lub gdy trzeba przeprowadzić skomplikowaną analizę danych.
Utwórz quiz