Помощь в учёбе, очень быстро...
Работаем вместе до победы

Условие EXISTS. 
Организация баз данных

РефератПомощь в написанииУзнать стоимостьмоей работы

Этот запрос выбирает все строки из таблицы ЕМР и создает результирующий набор с повторяющимися названиями отделов. Используя коррелированный подзапрос, можно выбрать все отделы и выполнять подзапрос для каждого отдела до тех пор, пока не будет найдена хоть одна строка в таблице служащих следующим образом: Условие EXISTS используется для определения того, соответствуют ли какие-либо строки… Читать ещё >

Условие EXISTS. Организация баз данных (реферат, курсовая, диплом, контрольная)

Условие EXISTS используется для определения того, соответствуют ли какие-либо строки определенным коррелированным критериям. Например, можно выдать запрос для выборки всех служащих, которые работают в отделе, расположенном в НьюЙорке, как показано в следующем примере:

select e. dept_no, e. emp_last_name from emp e.

where exists (select V from dept d.

where e. dept_no = d. dept_no and d. location =.

' NEW YORK ') order by e. dept Jd ;

DEPT NO_EMP LAST NAME.

  • 10 RACCIO
  • 60 MATTEO
  • 60 SIM
  • 60 ANNUNZIATO
  • 20 SAGE
  • 60 FARRELL

В этом конкретном случае предыдущий запрос может быть записан как простой соединенный запрос.

Коррелированный подзапрос не должен использоваться, когда может быть использован простой запрос, как показано ниже: select e. dept_ no, e. emp_ last_ name from emp e, dept d.

where e. dept_ no = d. dept_no and d. location = 'NEW YORK' order by e. emp_ id;

Обычно коррелированный подзапрос работает менее эффективно, если он возвращает небольшой набор данных. Однако, если коррелированный подзапрос может выдать много строк для каждого экземпляра первичного запроса, то имеет смысл его использовать. В качестве эмпирического правила можно сформулировать следующее: если коррелированный подзапрос основан на первичном ключе таблицы подзапроса, то его выполнение не гарантировано. Предположим, что необходимо вывести список неповторяющихся названий отделов, в которых числится хотя бы один штатный сотрудник. Можно использовать следующий запрос: select distinct d. dept_name from emp e, dept d.

where e. dept_.no = d. dept_no;

DEPT NAME ACCOUNTING BROADCAST OPERATIONS.

CONSULTING SERVICES HOSPITAL SERVICES PERSONNEL SALES

Этот запрос выбирает все строки из таблицы ЕМР и создает результирующий набор с повторяющимися названиями отделов. Используя коррелированный подзапрос, можно выбрать все отделы и выполнять подзапрос для каждого отдела до тех пор, пока не будет найдена хоть одна строка в таблице служащих следующим образом:

select d. dept_name from dept d where exists (select V.

from emp e.

where e. dept_no = d. dept_no) order by d. dept_name;

ПРИМЕЧАНИЕ.

Одним из преимуществ использования фразы distinct (для ввода различимых значений) является то, что строки автоматически возвращаются в алфавитном порядке (при использовании последних выпусков Oracle). Для достижения того же самого результата при использовании коррелированного подзапроса необходимо указать фразу ORDER BY. Обратите внимание, что Oracle настаивает на использовании этой фразы для выборки каких-либо данных в нужном порядке, ибо не обещает, что в будущих выпусках RDBMS будет поддерживаться то же средство сортировки по умолчанию.

Показать весь текст
Заполнить форму текущей работой