Построение нетривиальных запросов. Лекция 7

Содержание

Слайд 2

Подзапрос – это инструмент создания временной таблицы, содержимое которой извлекается и

Подзапрос

– это инструмент создания временной таблицы, содержимое которой извлекается и обрабатывается

внешним оператором.
Текст подзапроса должен быть заключен в скобки.
Слайд 3

К подзапросам применяются следующие правила и ограничения: • фраза ORDER BY

К подзапросам применяются следующие правила и ограничения:

• фраза ORDER BY не

используется, хотя и может присутствовать во внешнем подзапросе;
• список в предложении SELECT состоит из имен отдельных столбцов или составленных из них выражений – за исключением случая, когда в подзапросе присутствует ключевое слово EXISTS;
• по умолчанию имена столбцов в подзапросе относятся к таблице, имя которой указано в предложении FROM. Однако допускается ссылка и на столбцы таблицы, указанной во фразе FROM внешнего запроса, для чего применяются квалифицированные имена столбцов (т.е. с указанием таблицы);
• если подзапрос является одним из двух операндов, участвующих в операции сравнения, то запрос должен указываться в правой части этой операции.
Слайд 4

Подзапросы, возвращающие единственное значение Подзапросы (вложенные запросы), возвращающие единственное значение, наиболее

Подзапросы, возвращающие единственное значение

Подзапросы (вложенные запросы), возвращающие единственное значение, наиболее часто

применяются в случаях, когда значение определённого столбца в основном запросе требуется сравнить с некоторым единственным значением при помощи одного из операторов сравнения (=, <, >, <=, >=). Значение, с которым производится сравнение, как раз и возвращается подзапросом (вложенным запросом).
Верные признаки того, что подзапрос вернёт одно единственное значение:
в подзапросе применяется одна из агрегатных функций (COUNT, SUM, AVG, MAX, MIN);
подзапрос извлекает значение уникального идентификатора, например, первичного ключа.
Слайд 5

Типы подзапросов • Скалярный подзапрос возвращает единственное значение. Он используется везде,

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

• Скалярный подзапрос возвращает единственное значение. Он используется везде, где

требуется указать единственное значение.
• Табличный подзапрос возвращает множество значений, т.е. значения одного или нескольких столбцов таблицы, размещенные в более чем одной строке. Он возможен везде, где допускается наличие таблицы.
Слайд 6

Подзапросы, возвращающие множество значений могут применяться в запросах с предикатами IN

Подзапросы, возвращающие множество значений

могут применяться в запросах с предикатами IN и EXISTS и кванторными функциями ALL

и ANY.
Слайд 7

Некоррелирующие и коррелирующие подзапросы Подзапрос, возвращающий результат или результаты, для получения

Некоррелирующие и коррелирующие подзапросы
Подзапрос, возвращающий результат или результаты, для получения которых

значения указанного столбца не должны соотноситься (коррелировать) со значениями столбцов, указанных в основном запросе, называется некоррелирующим.
Слайд 8

Подзапрос, возвращающий результат или результаты, для получения которых значения указанного столбца

Подзапрос, возвращающий результат или результаты, для получения которых значения указанного столбца

должны соотноситься (коррелировать) со значениями столбцов, указанных в основном запросе, называется коррелирующим. Иными словами, результат, выполнения подзапроса зависит от значений, возвращаемых основным запросом..
Слайд 9

Оператор EXISTS используется в условиях и принимает значение «истина», если следующий

Оператор EXISTS

используется в условиях и принимает значение «истина», если следующий

за ним подзапрос имеет хотя бы одну запись выходных данных.
Предикат NOT EXISTS обеспечивает противоположное условие
Слайд 10

Использование подзапросов, возвращающих множество значений Во многих случаях значение, подлежащее сравнению

Использование подзапросов, возвращающих множество значений

Во многих случаях значение, подлежащее сравнению в

предложениях WHERE или HAVING, представляет собой не одно, а несколько значений.
Вложенные подзапросы генерируют непоименованное промежуточное отношение, временную таблицу. Оно может использоваться только в том месте, где появляется в подзапросе. К такому отношению невозможно обратиться по имени из какого-либо другого места запроса.
Слайд 11

Применяемые к подзапросу операции основаны на тех операциях, которые, применяются к

Применяемые к подзапросу операции основаны на тех операциях, которые, применяются к

множеству:
• { WHERE | HAVING } выражение [ NOT ] IN (подзапрос);
• { WHERE | HAVING } выражение оператор_сравнения { ALL | SOME | ANY } (подзапрос);
• {WHERE | HAVING } [ NOT ] EXISTS (подзапрос);
Слайд 12

Использование операций IN и NOT IN Оператор IN используется для сравнения

Использование операций IN и NOT IN

Оператор IN используется для сравнения некоторого

значения со списком значений, при этом проверяется, входит ли значение в предоставленный список или сравниваемое значение не является элементом представленного списка.