SQL Подзаявките са ценни функции, които ни позволяват да вградим една заявка в друга, добавяйки по-голяма значимост към извличането и манипулирането на данни по сложен начин. Използва се за настройка на временни таблици или междинни резултати, които впоследствие да бъдат използвани от външната заявка.
Подзаявка в клаузата FROM
Клаузата FROM може да се използва за указване на израз на подзаявка в SQL. Връзката, произведена от подзаявката, след това се използва като нова релация, върху която външната заявка се прилага за по-нататъшни операции. Подзаявки вFROMклаузата се използва, когато трябва да създадем временен набор от данни, който не съществува в нито една физическа таблица. Това може да бъде изключително полезно при работа със сложни набори от данни.
конкатенация java низ
Корелационните променливи от таблиците, посочени в клаузата FROM на външната заявка, не могат да се използват директно в подзаявките в клаузата FROM. По-долу са дадени два синтаксиса за използване на подзаявка в клаузата FROM, използвани в различни сценарии.
1. Проста подзаявка вFROMКлауза:
ИЗБЕРЕТЕ колона1 колона2
FROM (ИЗБЕРЕТЕ колона_x AS C1 колона_y FROM таблица WHERE условие) AS subquery_table
WHERE външно_условие;
системен софтуер
2. Подзаявка вFROMКлауза сJOIN:
ИЗБЕРЕТЕ колона1 колона2
FROM (SELECT column_x AS C1 column_y FROM table WHERE PREDICATE_X) AS table2
ПРИСЪЕДИНЕТЕ таблица1 КЪМ table2.some_column = table1.some_column
WHERE ПРЕДИКАТ;
java команда за връщане
Параметри:
- Подзаявка : Вътрешната заявка, оградена в скоби. Той извлича данни, които ще действат като временна таблица.
- Псевдоним : Подзаявката трябва да получи псевдоним (
subquery_table), за да бъдат посочени във външната заявка. - Външна заявка : След това външната заявка може да работи с тази временна таблица, създадена от подзаявката, прилагайки филтри или извършвайки допълнителни операции.
Как работят подзаявките в клаузата FROM
- Оценка на подзаявка : Първо се оценява подзаявката в клаузата from и след това резултатите от оценката се съхраняват в нова временна връзка.
- Външна заявка : След като подзаявката изпълни и върне набор от данни, външната заявка се оценява, като се избират само тези кортежи от временната релация, която удовлетворява предиката в клаузата where на външната заявка.
Пример за използване на подзаявка в клаузата FROM
Нека обсъдим някои примери от реалния свят, за да разберем как подзаявките в клаузата FROM работят на практика. Тук имаме две маси Инструктор таблица, която съдържа информация за инструкторите, включително тяхната заплата и отдел. Другият е Отдел таблица, която съдържа информация за различни отдели, включително бюджета на отдела.
Инструктор Таблица
| ИД на инструктор | Име | Отдел | Заплата |
|---|---|---|---|
| 44547 | Смит | Компютърни науки | 95 000 |
| 44541 | Бил | Електрически | 55 000 |
| 47778 | сама | Хуманитарни науки | 44000 |
| 48147 | Ерик | Механични | 80 000 |
| 411547 | балсам | Информационни технологии | 65 000 |
| 48898 | Йена | Гражданска | 50 000 |
Отдел Таблица
| Име на отдел | Бюджет |
|---|---|
| Компютърни науки | 100 000 |
| Електрически | 80 000 |
| Хуманитарни науки | 50 000 |
| Механични | 40 000 |
| Информационни технологии | 90 000 |
| Гражданска | 60 000 |
Пример 1: Намерете всички професори, чиято заплата е по-голяма от средния бюджет на всички отдели.
В този пример ще използваме подзаявка в клаузата FROM, за да изчислим средния бюджет на всички отдели и след това да направим сравнение със заплатите на инструкторите.
Запитване:
хвърляне в sql
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;
Изход
| ИД на инструктор | Име | Отдел | Заплата |
|---|---|---|---|
| 44547 | Смит | Компютърни науки | 95 000 |
| 48147 | Ерик | Механични | 80 000 |
Обяснение:
- Средният бюджет на всички отдели от отношението на отдела е 70 000.
- Ерик и Смит са единствените инструктори в отношението инструктор, чиято заплата е повече от 70 000 и следователно присъстват в отношението изход.
Защо да използвате подзаявки в клаузата FROM?
Има различни предимства от използването на подзаявки в клаузата FROM, както е дадено по-долу:
- Опростяване : Те могат да опростят сложни заявки, като ги разделят на по-малки, по-управляеми части. Не е необходимо да създавате временни таблици изрично във вашата база данни.
- Подобрена четливост : Използването на подзаявки в клаузата FROM прави заявката по-четлива тъй като тя разделя > Гъвкавост : Подзаявките ви позволяват да извършвате операции, които в противен случай биха били неудобни, като агрегиране или филтриране по отношение на други набори от данни, без да е необходимо да създавате междинни таблици.
Заключение
Подзаявките в клаузата FROM ни позволяват да дефинираме набори от временни резултати които могат да бъдат използвани от външни заявки. Те улесняват сложните SQL операции подобряват четимостта на заявките и осигуряват гъвкавост при филтриране и агрегиране на данни. Да знаете как да използвате подзаявки в рамките на клаузата FROM е основно умение за всеки SQL практикуващ, особено когато работите със сложни бази данни или когато трябва да извършите сложен анализ на данни.
Създаване на тест