Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SQL_All / sql / lab2sql

.doc
Скачиваний:
51
Добавлен:
18.03.2015
Размер:
25.09 Кб
Скачать

Лабораторная работа №2/SQL

Условия в запросах SQL

В предложениях WHERE возможны следующие операторы сравнения:

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

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

Пример запроса. Вывести заказчиков с рейтингом, большим 200

SELECT * FROM customer WHERE rating>200;

В предложениях WHERE возможны следующие логические операторы: AND, OR (бинарные), NOT (унарный).

X=истина Y=истина X AND Y=истина X OR Y= истина

X=истина Y=ложь X AND Y=ложь X OR Y= истина

X=ложь Y=истина X AND Y=ложь X OR Y= истина

X= ложь Y= ложь X AND Y= ложь X OR Y= ложь

Пример запроса. Вывести заказчиков в San Jose с рейтингом выше 200

SELECT * FROM customer WHERE city="San Jose" and rating>200

Вывести заказчиков в San Jose ИЛИ имеющих рейтинг выше 200

SELECT * FROM customer WHERE city="San Jose" or rating>200

Вывести заказчиков в San Jose ИЛИ имеющих рейтинг НЕ выше 200

SELECT * FROM customer WHERE city="San Jose" or not rating>200

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

Пример запроса. Естественный порядок следования операторов.

SELECT * FROM customer WHERE not city="San Jose" or rating>200

Применение скобок изменит вывод данных:

SELECT * FROM customer WHERE not (city="San Jose" or rating>200)

Использование скобок необходимо для составления сложных логических выражений.

SELECT * FROM orders WHERE not ((odate = 10/03/90 and snum > 1002) or amt > 2000.00)

Для определения принадлежности к множеству можно использовать либо логическое выражение, либо (проще) воспользоваться оператором IN.

Пример запроса. Вывести всех продавцов из Барселоны ИЛИ из Лондона.

Способ 1. Логическое выражение

SELECT * FROM sales WHERE city = "Barcelona" or city="London"

Способ 2. Оператор IN

SELECT * FROM sales WHERE city IN ("Barcelona" , "London")

Определить заказчиков, торгующих с продавцами с номерами 1001, 1007, 1004

SELECT * FROM customer WHERE snum IN (1001 , 1007 , 1004)

Для определения принадлежности к интервалу значений возможно использование оператора BETWEEN.

Пример запроса. Вывести продавцов с комиссионными между 0.10 и 0.12

Способ 1. Логическое выражение.

SELECT * FROM sales WHERE comm>=0.10 AND comm <=0.12

Способ 2. Оператор BETWEEN

SELECT * FROM sales WHERE comm BETWEEN 0,10 AND 0,12

Операторы BETWEEN и IN можно комбинировать. Например, следующий запрос исключает крайние значения комиссионных:

SELECT * FROM sales WHERE comm BETWEEN 0.10 AND 0.12

AND NOT comm IN (0.10 , 0.12);

Задания для самостоятельной работы.

  1. Вывести все продажи с ценой превышающей 1000.

  2. Вывести поля sname,city продавцов из Лондона с комиссионными выше 0.10

  3. Вывести всех заказчиков НЕ из Рима с рейтингом меньшим или равным 100

  4. Как проще переписать такой запрос: SELECT snum,sname,city FROM sales WHERE (comm >=0.12 OR comm < 0.14)

  5. Вывести все продажи на 10/03/90 или 10/04/90 (два варианта)

  6. Вывести заказчиков, имена которых начинаются на буквы от ‘A’ до ‘G’ включительно. (Используйте оператор IN).

Соседние файлы в папке sql