Что представляет собой вложенный запрос (подзапрос) в SQL
Краткий ответ
Подзапрос — это SQL-запрос, встроенный внутрь другого запроса для получения промежуточных данных. Он позволяет использовать результаты одного запроса как часть условия или источника данных в основном запросе.
Развёрнуто
Краткий ответ
Подзапрос — это запрос, который находится внутри другого SQL-запроса и возвращает данные для использования в основном запросе. Такие конструкции помогают фильтровать, сравнивать или формировать данные на основе результатов вложенного запроса.
Как это работает
Подзапрос (subquery) — это выражение SELECT, размещённое внутри другого SQL-запроса, обычно в разделе WHERE, FROM или SELECT. Он выполняется сначала, возвращая одно значение, множество значений или таблицу, которые затем применяются во внешнем запросе.
Подзапросы бывают:
- Скалярные — возвращают одно значение и используются в условиях или вычислениях.
- Мультистрочные (многострочные) — возвращают набор значений для сравнения с помощью операторов
IN,EXISTS. - Табличные — используются в
FROMдля формирования временной таблицы.
| Тип подзапроса | Возвращаемый результат | Применение |
|---|---|---|
| Скалярный | Одно значение | В условии или вычислении |
| Мультистрочный | Несколько значений | В фильтрах с IN, EXISTS |
| Табличный | Таблица | В FROM для дальнейших операций |
Пример
SELECT employee_name
FROM employees
WHERE department_id = (
SELECT department_id
FROM departments
WHERE department_name = 'Sales'
);
В этом примере подзапрос ищет department_id отдела "Sales", а внешний запрос выбирает сотрудников, принадлежащих этому отделу.
Что важно знать на собеседовании
- Подзапросы могут быть вложены на несколько уровней, но слишком глубокая вложенность снижает производительность.
- Использование подзапросов можно заменить соединениями (
JOIN) для оптимизации. - Подзапросы бывают коррелированными (зависят от внешнего запроса) и некоррелированными (независимы).
- Важно понимать, где подзапросы возвращают одно значение, а где — множество, чтобы правильно использовать операторы сравнения.
Тема: SQL и базы данных | Уровень: junior