Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Использование реляционных и булевых операторов

 

Реляционные операторы (операторы сравнения), отличные от равенства также широко применяются при формировании запросов. Булевы операторы AND, OR, NOT в сочетании со скобками позволяют получать очень мощные предикаты.

Примеры:

7.В предложении WHERE можно использовать операторы сравнения равно

> больше, чем

< меньше, чем

>= больше или равно

<= меньше или равно

<> не равно

Например:

SELECT * FROM ПОКУПАТЕЛИ WHERE РЕЙТ >= 200;

Результат выполнения команды:

 

НПК ИМЯПК ГОРОД РЕЙТ НПР
Лосев Рига
Квасов Саратов
Тепин Брянск
Пирогов Саратов

 

8. Применение булевых операторов AND, OR, NOT

Вывести покупателей из Саратова, чей рейтинг превышает 200: SELECT * FROM ПОКУПАТЕЛИ WHERE ГОРОД=’САРАТОВ’ AND РЕЙТ > 200

Результат:

НПК ИМЯПК ГОРОД РЕЙТ НПР
Пирогов Саратов

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

SELECT* FROM ПОКУПАТЕЛИ

WHERE NOT ГОРОД=’САРАТОВ’OR РЕЙТ > 200;

дает результат:

НПК ИМЯПК ГОРОД РЕЙТ НПР
Гришин Орел
Лосев Рига
Тепин Брянск
Вареников Орел
Антонов Рига
Пирогов Саратов

 

а запрос

SELECT* FROM ПОКУПАТЕЛИ

WHERE NOT (ГОРОД='САРАТОВ' OR РЕЙТ > 200)

дает другой результат:

 

 

НПК ИМЯПК ГОРОД РЕЙТ НПР
Гришин Орел
Лосев Рига
Вареников Орел
Антонов Рига

Задание на самостоятельное выполнение

6. Запишите запрос, который покажет все заявки, превышающие сумму 1000р.

7. Запишите запрос, который покажет имена продавцов и названия городов длявсех продавцов из Орла с комиссионными, превышаюми 0.10.

8. Запишите запрос к таблице ПОКУПАТЕЛИ, который включит в выходные данные всех покупателей, для которых рейтинг <=100. в том случае если они расположены не в Риге.

9.Каков будет результат выполнения следующего запроса?

SELECT * FROM ЗАКАЗЫ

WHERE

(СУММА < 1000 OR NOT (ДАТА =#03/10/99# AND НПК > 2003));

10. Каков будет результат выполнения следующего запроса? .

SELECT*FROM ЗАКАЗЫ

WHERE NOT((ДАТА=#03/10/99# OR НПР > 1006) AND СУММА >=1500);

11.Как упростить запись следующего запроса?

SELECT НПР, ИМЯПР, ГОРОД, КОМ

FROM ПРОДАВЦЫ

WHERE (КОМ >0.12 OR КОМ < 0.14);

Использование специальных операторов в условиях.

Кроме булевых оперсров в операторов сравнения в SQL используются специальные оператор IN, BETWEEN, LIKE н IS NULL. Эта операторы позволяют записывал»лее выразительные предикаты Оператор IS NULL касается значений пропускаемых данных и NULL-значений, фиксирующих отсутствие данных.

Примеры.

10. ОператорINопределяет множество, которому данное значение может принадлежать или не принадлежать.

Пусть нужно найти всех продавцов, расположенных либо в Клину, либо в Орле. Тогда можно написать следующий запрос:

SELECT * FROM ПРОДАВЦЫ

WHERE ГОРОД='Клин' OR ГОРОД='Орел'

Однако существует более простой способ получить ту же самую информацию:

SELECT * FROM ПРОДАВЦЫ

WHERE ГОРОД IN ('Клин','Орел');

Результат запроса:

НПР ИМЯПР ГОРОД КОМ
Петров Орел 0,12
Мишин Орел 0,11
Квашнин Клин 0,15

 

Если в IN перечисляются числовые значения, кавычки опускаются.

 

11. Найти всех покупателей, обслуживаемых продавцами 1001, 1007,1004.

SELECT * FROM ПОКУПАТЕЛИ WHERE НПР IN(1001,1007,1004);

 

НПК ИМЯПК ГОРОД РЕЙТ НПР
Гришин Орел
Вареников Орел
Антонов Рига
Пирогов Саратов

 

12. Оператор BETWEEN сходен с IN. Вместо перечисления элементов множества BETWEEN задает границы, в которые должно попадать значение, чтобы предикат был истинным.

Для записи оператора используется ключевое слово BETWEEN, за которым следуют начальное значение, ключевое слово AND и конечное значение.

Например, следующий запрос извлекает таблицы ПРОДАВЦЫ всех продавцов, комиссионные которых имеют величину в диапазоне 0.10 и 0.12:

SELECT * FROM ПРОДАВЦЫ

WHERE КОМ BETWEEN 0.10 AND 0.12;

НПР ИМЯПР ГОРОД КОМ
Петров Орел 0,12
Сидоров Калуга 0,1
Мишин Орел 0,11

13. Оператор BETWEEN является включающим, т.е. граничные значения делают предикат истинным. Если граничные значения надо исключить, то можно, например записать

SELECT * FROM ПРОДАВЦЫ

WHERE (КОМ BETWEEN 0.10 AND 0.12)

AND NOT КОМ IN (0.10, 0.12);

Тогда получим результат:

НПР ИМЯПР ГОРОД КОМ
Мишин Орел 0,11

14. Следующий запрос выбирает имена всех покупателей, имена которых попадают в заданный алфавитный диапазон:

 

SELECT * FROM ПОКУПАТЕЛИ WHERE ИМЯПК

BETWEEN 'A' AND 'Л';

 

НПК ИМЯПК ГОРОД РЕЙТ НПР
Гришин Орел
Квасов Саратов
Вареников Орел
Антонов Рига

 

В результат не попала строка с именем покупателя 'Лосев' несмотря на то. что BETWEEN является включающим. Дело в том, что строка ‘Л’ короче, чем 'Лосев', и при сравнении она дополняется пробелами, которые предшествуют символам алфавита. Об этом следует помнить при использовании BETWEEN со строковыми диапазонами.

15. Оператор LIKE применим только к полям текстового типа, поскольку он используется для поиска подстрок, т.е. он осуществляет просмотр строки для выяснения: входит ли заданная подстрока в указанное поле.

С этой же целью используются шаблоны, или подстановочные знаки:

* заменяет любые символы в начале или конке строки,

? заменяет любой текстовый символ,

# заменяет любую цифру.

Пусть надо найти покупателей, фамилии которых начинаются на К. Тогдf запрос может иметь вид:

SELECT * FROM ПОКУПАТЕЛИ

WHERE ИМЯПК LIKE 'К*';

Результат:

НПК ИМЯПК ГОРОД РЕЙТ НПР
Квасов Саратов

16. Часто в таблице встречаются записи с незаданными значениями какого-либо из полей. В таких случаях SQL позволяет указать в поле NULL-значение.

 

Результат любого сравнения с NULL-значением неизвестен. Для локализации NULL-значений SQL располагает специальным оператором IS. который используется с ключевым словом NULL.

Например, для нахождения всех записей со значениями NULL• таблице ПОКУПАТЕЛИ в столбце ГОРОД следует ввести: ,

SELECT * FROM ПОКУПАТЕЛИ

WHERE ГОРОД IS NULL;

В данном случае выходных данных не будет, поскольку в данной базе нет NULL-значений.

Запрос:

SELECT * FROM ПОКУПАТЕЛИ

WHERE ГОРОД IS NOT NULL;

или:

SELECT * FROM ПОКУПАТЕЛИ

WHERE NOT ГОРОД IS NULL;

приведет к выводу всей таблицы ПОКУПАТЕЛИ.

Задание на самостоятельное выполнение

12. Запишите два запроса (один с оператором IN, другой с BETWEEN), которые выдают сведения о всех заявках, принятых 3 или 4 октября 1999 года.

13. Запишите запрос, который выбирает всех покупателей. обслуживаемых Петровым или Мишиным, номера которых, в таблице ПРОДАВЦЫ соответственно 1001 и 1004.

14. .Запишите запрос, который выбирал всех покупателей, имена которых начинаются на любую из буи от 'А' до ‘П’.

15. .Запишите запрос, который выбирал всех покупателей, имена которых начинаются на ’В’.

16. Запишите запрос, который выбирает все заявки, у которых в поле СУММА указано какое-либо значение отличное от 0.

 

Последнее изменение этой страницы: 2016-06-09

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...