Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Использование реляционных и булевых операторов
Реляционные операторы (операторы сравнения), отличные от равенства также широко применяются при формировании запросов. Булевы операторы 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 ('Клин','Орел'); Результат запроса:
Если в 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;
13. Оператор BETWEEN является включающим, т.е. граничные значения делают предикат истинным. Если граничные значения надо исключить, то можно, например записать SELECT * FROM ПРОДАВЦЫ WHERE (КОМ BETWEEN 0.10 AND 0.12) AND NOT КОМ IN (0.10, 0.12); Тогда получим результат:
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.
12 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-06-09 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |