Конспект лекций по дисциплине «Сетевые базы данных», страница 10

                       =          - равно

                       >          - больше, чем

                       <          - меньше, чем

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

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

                <>, !=, ^=     - не равно.

Стандартными булевыми операторами, распознаваемыми SQL, являются:

                       AND     - логическое И

                       OR       - логическое ИЛИ

                       NOT     - логическое ОТРИЦАНИЕ

Следующий пример показывает, как выбрать имена и рейтинги тех покупателей, которые живут в Лондоне или в Риме.

SELECT сname, rating  FROM cust  WHERE city='London' OR city='Rome'

К специальным операторам относятся такие, как IN, BETWEEN и LIKE. Оператор IN задает множество, принадлежность к которому может задаваться в условии выборки, и является альтернативой применению оператора OR. Так, последний пример можно записать и другим способом для достижения того же результата.

SELECT сname, rating  FROM cust  WHERE city IN ('London', 'Rome')

Оператор BETWEEN похож на оператор IN, но BETWEEN задает диапазон значений. После ключевого слова BETWEEN вводится начальное значение диапазона, затем ключевое слово AND и конечное значение. Следующая команда будет извлекать всех продавцов с комиссионными от 0.10 до 0.12 (т.е. граничные значения попадают в выборку):

SELECT * FROM sal WHERE comm BETWEEN 0.10 AND 0.12

Оператор LIKE используется, чтобы находить подстроки в указанном поле таблицы. Этот оператор применим только к полям типа CHAR или VARCHAR. В искомой строке могут использоваться групповые символы (wildkards):

- символ подчеркивания «_» замещает любой одиночный символ,

- знак процента «%» – группу из любого числа символов.

В следующем примере запрашиваются сведения о всех заказчиках, в имени которых второй буквой является буква i:

SELECT * FROM cust WHERE cname LIKE '_i%'

Агрегатные функции и группировка

Агрегатные (обобщающие, многострочные, групповые) функции обрабатывают множества значений столбца таблицы или группы столбцов и возвращают обобщенное значение для группы. Наиболее употребимы следующие функции:

            COUNT- количество строк, выбранных в запросе

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

            AVG     - среднее значение всех значений столбца

            MAX     - наибольшее значение из всех значений столбца

            MIN      - наименьшее значение из всех значений столбца

Например, для нахождения общей суммы всех заказов в таблице ORD можно ввести следующий запрос:

SELECT SUM (amt) FROM ord

Агрегатные функции могут применяться к группам строк (а не ко всем строка таблицы) при использовании опции GROUP BY. При этом автоматически выполняется разбивка на группы значений в тех столбцах, которые указаны как аргументы в опции GROUP BY. Например, требуется найти наиболее крупный заказ для каждого продавца. Можно сделать раздельный запрос для каждого из них, выбрав MAX(amt) из таблицы Заказов для каждого значения поля snum. Однако, GROUP BY позволяет это сделать одной командой:

SELECT snum, MAX(amt)  FROM ord

   GROUP BY snum

Если требуется получить групповые данные не по всем группам, а только по некоторым, то для указания критерия отбора опция GROUP BY дополняется опцией HAVING. Предположим, что в предыдущем примере потребовалось вывести информацию только для групп, чьи максимальные закаы превышают 3000. Это можно сделать следующим образом:

SELECT snum, MAX(amt)  FROM ord

   GROUP BY snum

   HAVING MAX(amt) > 3000

Сортировка результирующих данных

При выборке данных очень часто требуется, чтобы результат содержал данные, отсортированные по значениям какого-либо поля или группы полей. Для этих целей используется фраза ORDER BY. В двух следующих примерах мы выводим одни и те же данные. Но в первом случае они отсортированы в алфавитном порядке имен покупателей, а во втором – названий городов, причем в убывающем порядке.