Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_лекции_Саладаев.doc
Скачиваний:
55
Добавлен:
03.05.2015
Размер:
15.75 Mб
Скачать

Оператор between … and

Вместо перечисления, как в IN, вBETWEENзадаются границы. Первое значение должно быть первым в алфавитном или числовом порядке (чувствителен к порядку).

SELECT * FROM Salespeople

WHERE comm BETWEEN .10 AND .12;

Граничные значения включаются в зону истинности. Если их нужно исключить, то:

SELECT * FROM Salespeople

WHERE (comm BETWEEN .10 and .12) and not

CommIN(.10, .12);

Для символьных полей:

SELECT * FROM Salespeople

WHERE cname BETWEEN “A” AND “G”;

Заметим, что “A” и “G” строки и при сравнении неравные строки заполняются пробелами, но пробел предшествует символам в алфавитной кодировке, поэтому строка “Giovanni” не будет включена, поэтому нужно либо дать следующую букву- «Н», либо приписать несколькоZкG- “GZZ”, чтобы включить все имена наG.

Оператор like

Используется для поиска подстрок и применим только к символьным (текстовым) полям. Для расширения зоны поиска применяются символы- шаблоны:

« - »- заменяет один любой; %- последовательность, в том числе и нулевой длины.

SELECT * FROM Customers

WHERE cname LIKE “G%”;

Возникает проблема для самих этих символов (как искать их). Для ее решения существует возможность определить так называемый ESCAPE- символ. Предшествуя символу- шаблонуESCAPE-символ делает из него обычный символ.Он действует и на себя самого если указать два раза подряд.

SELECT * FROM Sales people

WHERE sname LIKE “%/-%” ESCAPE ‘/’;

определяет символ ‘/’ как служебный ESCAPE

Оператор is null

Поскольку в полях может быть значение NULL, которые расшифровываются как «неизвестные», то и операции над ними дают «неизвестное» (напримерNOT). Поэтому нужен механизм исключения (локализации) подмножества сNULLи это операторISNULL:

SELECT * FROM Customers WHERE city IS NULL;

Допустима противоположная конструкция ISNOTNULL. Еще пример наNOTс другими операторами:

WHERE NOT city IN (“London”, “Barcelona”);

Применение функций агрегирования

Запросы могут давать в результате не только группу значений, но и работать по одному полю. Для этого применяются агрегатные функции:

  • COUNTопределяет количество строк или значений поля, выбранных посредством запроса (и неNULL);

  • SUM- арифметическая сумма всех значений поля;

  • AVG- среднее значение по выбранному полю;

  • MAX, MIN.

Пример:

SELECT SUM (amt)

F

Имя поля попадает в аргумент

ROM Orders;

Сумма всех заявок из таблицы Orders. На выходе- единственное значение.

Специальные атрибуты в COUNT (подсчет)

Когда нужно подсчитать по столбцу, используют DISTINCT(только для различных значений).

SELECT COUNT (DISTINCT snum) FROM Orders;

Для того, чтобы считать целиком строки:

SELECTCOUNT(*)FROMCustomers;

и NULLи повторения включаются.

Если мы хотим исключить NULLи сузить до поля, то используетсяALL:

SELECT COUNT (ALL rating) FROM Customers;

Подсчитываем исключая NULL, но включая повторения.

Скалярные выражения

До сих пор в аргументах агрегатных функций было одно поле, возможно и выражение:

SELECT MAX (binc + amt) FROM Orders

Для каждой строки сначала берется сумма двух полей, а потом из всех таких сумм- МАХ.