![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В выражениях могут использоваться следующие операторы сравнения:
= (равно), о (не равно), < (меньше), <= (меньше или равно), >
(больше), >= (больше или равно), которые могут предваряться оператором
NOT.
Предикат может принимать одно из трех значений: TRUE, FALSE,
UNKNOWN. В результатную таблицу переносятся те строки, для которых
значение предиката равно TRUE.
Кроме стандартных операторов сравнения в SQL можно использовать
специальные операторы предикатов:
• <интервальный предикат >;
• <предикат IN>;
• < предикат проверки на неопределенное значение >;
• <предикат подобия>.
При использовании интервального предиката диапазон значений
можно задавать в виде
WHERE [NОТ]<выражение> BETWEEN <нижнее выражение>
AND < верхнее выражением
3 9 2
Например, если требуется выдать сведения о поставке продукции
за последнюю декаду ноября 2002 г., то запрос можно задать следующим
образом:
Это же условие отбора можно задать и без использования интервального
предиката:
При использовании предиката IN предложение WHERE будет
иметь следующий вид:
В приведенном ниже примере требуется вывести данные о поставках
поставщиков P1, Р2, РЗ.
Без использования IN запрос имел бы следующий вид:
Пример с использованием подзапроса будет рассмотрен позже,
при демонстрации возможностей обработки нескольких таблиц.
Предикат подобия применяется для поиска подстроки в указанной
строке. Предложение WHERE при использовании предиката этого
типа будет иметь следующий вид:
В качестве <выражения_для_вычисления_значения_строки_1>
обычно используется <имя колонки>.
<Выражение_для_вычисления_значения_строки_2> называется
образцом. В образце разрешается применять заполнители (трафаретные
символы):
• символ подчеркивания (_) - используется вместо любого единичного
символа в проверяемом значении;
• символ процента (%) - заменяет набор любых символов в проверяемом
значении.
Предположим, что коды металлов начинаются с буквы «м». Тогда
запрос, позволяющий вывести сведения о поставке металлов, будет
иметь вид
Предикат проверки на неопределенное значение имеет вид
Например, если в таблице «Сотрудник» (sotr) есть поле «Ученая_сте-
пень» (ych_st), то запрос, выводящий список сотрудников, не имеющих
ученых степеней, будет выглядеть следующим образом:
При использовании подзапросов в условии WHERE может быть
использован квантор существования EXISTS. Формат условия
WHERE в этом случае имеет вид
EXISTS проверяет, вернул ли подзапрос какие-либо ряды. Фактически
любой подзапрос, который может быть выражен с использованием
IN, может альтернативным образом быть сформулирован также
с использованием EXISTS. Обратное утверждение несправедливо.
Пример запроса с использованием EXISTS:
Задача.
Выдать справку о нагрузке по кафедрам за 2009/2010 учебный год с детализацией по видам нагрузке, содержащую поля NAIMKAF, VIDNAGR и суммарный объем нагрузки (SQL).
select Table3.NaimKaf, Table3.VidNagr, SUM(Chas)as AllNAgr from
(select Kaf.NaimKaf, Table2.VidNagr, Table2.Chas from Kaf inner join
(select Table1.* from
(select Nagr.*, Prep.KodKaf from Nagr inner join Prep on Nagr.KodPrep=Prep.KodPrep) as Table1
where ((CONVERT(int, YEAR(Table1.Data))>=2009) AND (CONVERT(int, YEAR(Table1.Data))<=2010)) as Table2
on Table2.KodKaf=Kaf.KodKaf) as Table3 group by NaimKaf, VidNagr
Дата публикования: 2015-10-09; Прочитано: 430 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!