sql. Подзапросы в операторах SELECT | MetodPro.ru

Реклама на сайте

sql. Подзапросы в операторах SELECT


Оператор SELECT, вложенный в спецификаторе WHERE другого оператора SELECT или операторов INSERT, DELETE или UPDATE называется подзапросом. Подзапрос должен быть заключен в круглые скобки, чтобы указать серверу, что эту операцию следует выполнить первой.

Подзапросы бывают коррелированными и некоррелированными. Подзапрос является коррелированным, если его значение зависит от значения, производимого внешним оператором, содержащим данный подзапрос. Любой другой вид подзапроса называется некоррелированным. Следует отметить, что некоррелированный подзапрос выполняется только один раз, а коррелированный по одному разу для каждого значения, производимого внешним оператором.

Подзапрос, возвращающий в точности одно значение, можно рассматривать как функцию. В этом виде подзапросов часто используют агрегатные функции, так как эти функции всегда возвращают одно значение.

Ключевое слово ALL, указываемое перед запросом, используется для определения того, что условие сравнения выполняется для каждого возвращаемого подзапросом значения. Если подзапрос не возвращает ни одного значения, то логическое условие принимает значения TRUE.

Ключевое слово ANY используется для определения того, что условие сравнения выполняется, по крайней мере, для одного значения, возвращаемого подзапросом. Если подзапрос не возвращает ни одного значения, то логическое условие принимает значения FALSE.

Примеры.

  1. Выбрать отделы и фамилии сотрудников библиотеки, зарплата которых меньше зарплат сотрудников художественного отдела.

SELECTНаименование_отдела, ФамилияFROMСотрудник

            WHEREЗарплата <ALL(SELECT ЗарплатаFROM Сотрудник

                                   WHEREНаименование_отдела= ”Художественный”)

  1. Выбрать отделы и фамилии сотрудников библиотеки, зарплата которых больше хотя бы одного сотрудника художественного отдела.

SELECTНаименование_отдела, ФамилияFROMСотрудник

            WHEREЗарплата >ANY(SELECT Зарплата FROM Сотрудник

                                   WHEREНаименование_отдела= ”Художественный”)

  1. Выбрать отделы и фамилии сотрудников библиотеки, которые получили премию (в размере 75% оклада), превышающую минимальную зарплату сотрудников художественного отдела в 1,5 раза.

SELECTНаименование_отдела, ФамилияFROMСотрудник

            WHEREЗарплата * 0.75 > (SELECT 1,5*MIN(Зарплата)

                                   FROM Сотрудник

                                   WHEREНаименование_отдела= ”Художественный”)



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем