К списку
SQL и базы данныхJuniorСкрининг с HR

Что представляет собой вложенный запрос (подзапрос) в 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