Он противоположен реляционным операторам, которые должны иметь оператор NOT - вводимым выражением. Например, если мы хотим устранить NULL из нашего вывода, мы будем использовать NOT, чтобы изменить на противоположное значение предиката:
SELECT *
FROM Customers
WHERE city IS NOT NULL;
Другими словами нужно найти все заполненные строки в столбце city.
При отсутствии значений NULL(как в нашем случае), будет выведена вся таблица Заказчиков. Аналогично можно ввести следующее
SELECT *
FROM Customers
WHERE NOT city IS NULL;
- что также приемлемо.
Мы можем также использовать NOT с IN:
SELECT *
FROM Salespeople
WHERE city NOT IN ('London', 'San Jose');
А это - другой способ подобного же выражения
SELECT *
FROM Salespeople
WHERE NOT city IN ('London', 'San Jose');
Вывод для этого запроса показывается в Рисунке 21.
Таким же способом Вы можете использовать NOT BETWEEN и NOT LIKE.
Рисунок 21 Использование NOT с IN
Практическая часть.
1. Выдите столбцы (Номер операции, сумма, дата) из таблицы Orders.
2. Напишите запрос который вывел бы все строки из таблицы Заказчиков для которых номер продавца = 1001.
3. Напишите запрос который вывел бы столбцы из таблицы Продавцов в следующем порядке: Город, имя продавца, имя продавца, коммисионные.
4. Напишите команду SELECT которая вывела бы рейтинг, сопровождаемую именем каждого заказчика в San Jose из таблицы Заказчики.
5. Напишите запрос который вывел бы номера продавцов из таблицы продажи без повторений.
6. Напишите запрос который сможет вывести все продажи со значениями суммы выше чем 1000.
7. Напишите запрос который может выдать вам поля Имя и Город для всех продавцов в Лондоне с комиссионными выше.10.
8. Напишите запрос к таблице Заказчиков чей вывод может включить всех заказчиков с оценкой =< 100, если они не находятся в Риме.
9. Что может быть выведено в результате следующего запроса?
SELECT *
FROM Orders
WHERE (amt < 1000 OR NOT (odate = #03.10.1990# AND cnum > 2003));
10.Что может быть выведено в результате следующего запроса?
SELECT *
FROM Orders
WHERE NOT ((odate = #03.10.1990# OR snum > 1006) AND amt > = 1500);
11.Как можно проще переписать такой запрос и каков результат?
SELECT snum, sname, city, comm
FROM Salespeople
WHERE (comm > +.12 OR comm <.14);
12.Напишите запрос который мог вывести все продажи на 3 или 4 Октября 1990.
13.Напишите запрос который выберет всех заказчиков обслуживаемых продавцами Peel или Motika.
14.Напишите запрос, который может вывести всех заказчиков чьи имена начинаются с буквы попадающей в диапазон от A до G.
15.Напишите запрос который выберет всех пользователей чьи имена начинаются с буквы C.
16.Напишите запрос который выберет все продажи имеющие нулевые значения или NULL в поле amt(сумма).
Контрольные вопросы
- Что пишется в SELECT и FROM?
- Какой знак применяется для вывода полного списка столбцов?
- Как удалить двойные значения?
- В какой команде можно написать условие?
- Что такое реляционный оператор? Приведите примеры.
- Приведите примеры булевых операторов?
- Что такое оператор IN?
- Что такое оператор BETWEEN?
- Что такое оператор LIKE?
- Для чего используют * и??
ПРАКТИЧЕСКАЯ РАБОТА
Тема: Запросы SQL(2часть)
Цель: Изучение тем:
1. Агрегатные функции
2. Формирование выводов запросов
3. Запрашивание многочисленных таблиц также как одной
Оборудование и/или программное обеспечение:IBM PC, MS Access /OpenOfficedBase.
Теоретическая часть
Что такое агрегатные функции?
Запросы могут производить обобщенное групповое значение полей точно также как и значение одного поля. Это делает с помощью агрегатных функций. Агрегатные функции производят одиночное значение для всей группы таблицы. Имеется список этих функций:
· COUNT
производит номера строк или не-NULL значения полей которые выбрал запрос.
· SUM
производит арифметическую сумму всех выбранных значений данного поля.
· AVG
производит усреднение всех выбранных значений данного поля.
· MAX
производит наибольшее из всех выбранных значений данного поля.
· MIN
производит наименьшее из всех выбранных значений данного поля.
Как использовать агрегатные функции?
Агрегатные функции используются подобно именам полей в предложении SELECT запроса, но с одним исключением, они берут имена поля как аргументы. Только числовые поля могут использоваться с SUM и AVG.
С COUNT, MAX, и MIN, могут использоваться и числовые или символьные поля. Когда они используются с символьными полями, что MIN будет означать первое, а MAX последнее значение в алфавитном порядке.
Чтобы найти SUM всех наших покупок в таблицы Продажы, мы можем ввести следующий запрос, с его выводом в Рисунке 1:
SELECT SUM (amt)
FROM Orders;
Рисунок 1 Выбор суммы
Как видно из рисунка столбец не имеет названия (Expr1000). Для того, чтобы столбец назывался например «Обшая_сумма», то запрос должен иметь вид:
SELECT Sum([amt]) AS Общая_сумма
FROM Orders;
Обращаю ваше внимание, что название столбца написано без пробела, если необходимо писать с пробелом, то запрос будет выглядеть:
SELECT Sum([amt]) AS [Общая сумма]
FROM Orders;
Рисунок 2 Выбор суммы и переименование столбца
Нахождение усредненной суммы - это похожая операция (вывод следующего запроса показывается в Рисунке 2):
SELECT AVG (amt)
FROM Orders;
Рисунок 3 Выбор среднего