Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных / БД2012 / Часть 4.doc
Скачиваний:
49
Добавлен:
28.03.2015
Размер:
856.06 Кб
Скачать

Оператор between … and

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

SELECT * FROM Salespeople

WHERE comm BETWEEN .10 AND .12;

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

SELECT * FROM Salespeople

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

Comm IN (.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 и это оператор IS NULL:

SELECT * FROM Customers WHERE city IS NULL;

Допустима противоположная конструкция IS NOT NULL. Еще пример на 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;

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

SELECT COUNT (*) FROM Customers;

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

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

SELECT COUNT (ALL rating) FROM Customers;

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

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

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

SELECT MAX (binc + amt) FROM Orders;

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

Соседние файлы в папке БД2012