Вложенный подзапрос. Перечислите и дайте характеристику видам вложенных подзапросов. Приведите примеры. Опишите использование операторов ANY, ALL с операторами сравнения.

Вложенный подзапрос- это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) фразу предложения SELECT. Вложенный подзапрос может содержать в своей WHERE (HAVING) фразе другой вложенный подзапрос и т.д.

Назначение вложенных подзапросовсостоит в том, чтобы при отборе строк таблицы, сформированной основным запросом, можно было использовать данные из других.

Виды вложенных подзапросов: простые и коррелированные вложенные подзапросы.

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

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

Они включаются в WHERE (HAVING) фразу с помощью условий IN, EXISTS или одного из условий сравнения ( = | <> | < | <= | > | >= ):

• подзапросы, не возвращающие ни одного или возвращающие несколько значений, начинаются с IN или операторов сравнения вместе с ключевым словом ANY или ALL;

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

• подзапросы, представляющие собой проверку на существование данных, начинаются с EXISTS.