505.56K
Категория: Базы данныхБазы данных

Подзапросы

1.

Подзапросы

2.

Подзапросы (Subqueries)
• Это запросы внутри запросов
• SELECT First_Name, Last_Name
• FROM Employees
• WHERE Salary >
(SELECT AVG(Salary)
FROM Employees)
SUBQUERY

3.

Подзапросы (Subqueries)
Подзапрос может использоваться:
• В инструкции SELECT, INSERT, UPDATE или DELETE;
• В инструкции FROM;
• В условии WHERE, HAVING.
• Внутри другого подзапроса
Подзапрос SQL (внутренний запрос) выполняется перед выполнением основного запроса
(внешнего запроса);
Основной запрос использует результат выполнения подзапроса.

4.

Подзапросы (Subqueries)
• Подзапрос должен быть заключен в круглые скобки;
• Подзапрос должен указываться в правой части оператора сравнения;
• Подзапросы не могут обрабатывать свои результаты, поэтому в подзапрос не может быть
добавлено условие ORDER BY;
• Если подзапрос возвращает во внешний запрос значение null, внешний запрос не будет
возвращать никакие строки при использовании операторов сравнения в условии WHERE.

5.

Виды подзапросов
• Однострочный подзапрос (Single subquery): возвращает ноль или одну строку;
• Многострочный подзапрос (Multiple row subquery): возвращает одну или несколько строк;
• Многострочный подзапросы используются с ключевыми словами IN, NOT IN, ALL, ANY

6.

GROUP BY + HAVING + SINGLE SUBQUERY
• SELECT job_title
• FROM jobs t1
• JOIN employees t2
• ON t1.job_id = t2.job_id
• GROUP BY job_title
• HAVING AVG(salary) = (
SELECT MAX(AVG(salary)) salary
FROM employees
)

7.

Многострочный подзапрос. Примеры

8.

WHERE EXISTS
• Возвращает TRUE, если в подзапросе была возвращена хотя бы одна строка, или более. В
обратном случае возвращает FALSE
• Выступает в роли проверки на существование
• Перед ключевым словом EXISTS не ставится имя столбца, константы или другого
выражения.
• Список выборки для вложенного запроса, указанного с помощью ключевого слова
EXISTS практически всегда состоит из знака "звездочка" (*). Так как производится
проверка только на предмет существования строк, удовлетворяющих заданным во
вложенном запросе условиям, то нет необходимости выводить имена найденных
столбцов.

9.

Примеры использования WHERE EXISTS

10.

WHERE EXISTS OR IN?
При применении
EXISTS не
происходит выборка
строк, то его
использование
более оптимально и
эффективно, чем
использование
оператора IN.

11.

WHERE in FROM

12.

Подзапрос внутри JOIN, WHERE, FROM
English     Русский Правила