17:20
Введение в подзапросы: Основные понятия.

Курс по SQL

Урок 29: Введение в подзапросы: Основные понятия

В этом уроке мы познакомимся с подзапросами (subqueries) в SQL. Подзапросы — это запросы, которые вложены внутрь другого запроса. Они позволяют выполнять сложные операции в одном SQL-запросе. Мы изучим основные понятия подзапросов, их виды и примеры использования.

Основы подзапросов

Подзапрос — это запрос, который выполняется внутри другого запроса. Он может быть использован в различных частях SQL-запроса, таких как SELECT, FROM, WHERE и HAVING. Подзапрос возвращает результат, который используется внешним запросом. Рассмотрим пример подзапроса:

SELECT Имя
FROM Студенты
WHERE КурсID = (SELECT ID FROM Курсы WHERE Название = 'Математика');

Результат выполнения

Имя
Иван

Виды подзапросов

Существует несколько видов подзапросов:

  • Подзапросы в SELECT: используются для выборки данных.
  • Подзапросы в WHERE: используются для фильтрации данных.
  • Подзапросы в FROM: используются для создания временных таблиц.
  • Коррелированные подзапросы: зависят от внешнего запроса.

Подзапросы в SELECT

Подзапросы могут быть использованы в предложении SELECT для выборки данных. Рассмотрим пример:

SELECT Имя,
 (SELECT Название FROM Курсы WHERE Курсы.ID = Студенты.КурсID) AS Курс
FROM Студенты;

Результат выполнения

Имя | Курс
Иван | Математика
Мария | Физика

Подзапросы в WHERE

Подзапросы могут быть использованы в предложении WHERE для фильтрации данных. Рассмотрим пример:

SELECT Имя
FROM Студенты
WHERE КурсID = (SELECT ID FROM Курсы WHERE Название = 'Физика');

Результат выполнения

Имя
Мария

Подзапросы в FROM

Подзапросы могут быть использованы в предложении FROM для создания временных таблиц. Рассмотрим пример:

SELECT Курс, COUNT(*)
FROM (SELECT Название AS Курс FROM Курсы) AS ВременнаяТаблица
GROUP BY Курс;

Результат выполнения

Курс COUNT(*)
Математика 1
Физика 1
Химия 1

Коррелированные подзапросы

Коррелированные подзапросы зависят от внешнего запроса и выполняются для каждой строки внешнего запроса. Рассмотрим пример:

SELECT Имя
FROM Студенты s
WHERE EXISTS (SELECT 1 FROM Курсы c WHERE c.ID = s.КурсID AND c.Название = 'Физика');

Результат выполнения

Имя
Мария

Упражнения

Упражнение 1: Подзапрос в SELECT

Выполните запрос для выборки имен студентов и названий курсов, на которых они учатся, используя подзапрос в SELECT.

Решение:

SELECT Имя,
 (SELECT Название FROM Курсы WHERE Курсы.ID = Студенты.КурсID) AS Курс
FROM Студенты;

Объяснение: Мы использовали подзапрос в SELECT для выборки названий курсов, на которых учатся студенты.

Упражнение 2: Подзапрос в WHERE

Выполните запрос для выборки имен студентов, которые учатся на курсе «Химия», используя подзапрос в WHERE.

Решение:

SELECT Имя
FROM Студенты
WHERE КурсID = (SELECT ID FROM Курсы WHERE Название = 'Химия');

Объяснение: Мы использовали подзапрос в WHERE для фильтрации студентов, которые учатся на курсе «Химия».

Упражнение 3: Подзапрос в FROM

Выполните запрос для выборки названий курсов и количества студентов на каждом курсе, используя подзапрос в FROM.

Решение:

SELECT Курс, COUNT(*)
FROM (SELECT Название AS Курс FROM Курсы) AS ВременнаяТаблица
GROUP BY Курс;

Объяснение: Мы использовали подзапрос в FROM для создания временной таблицы и группировки данных по курсам.

Упражнение 4: Коррелированный подзапрос

Выполните запрос для выборки имен студентов, которые учатся на курсе «Математика», используя коррелированный подзапрос.

Решение:

SELECT Имя
FROM Студенты s
WHERE EXISTS (SELECT 1 FROM Курсы c WHERE c.ID = s.КурсID AND c.Название = 'Математика');

Объяснение: Мы использовали коррелированный подзапрос для фильтрации студентов, которые учатся на курсе «Математика».

Категория: SQL | Просмотров: 76 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: