Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
01.05.2014
Размер:
526.34 Кб
Скачать

Элементы языка SQL

Оператор SELECT

Предложение ORDER BY – определение сортировки

Результирующий набор данных можно отсортировать с помощью предложения:

ORDER BY <список_столбцов>

Пример:

SELECT POKUP, DATRASH, TOVAR, KOLVO FROM RASHOD

WHERE TOVAR = “Кока-кола”

ORDER BY POKUP, DATARASH

Элементы языка SQL

Оператор SELECT

Устранение повторяющихся значений

Часто в результирующий НД необходимо включать не все записи с одинаковым значением комбинации столбцов. Для этого используется ключевое слово

DISTINCT

Пример:

SELECT DISTINCT TOVAR FROM RASHOD

Замечание:

использование DISTINCT может существенно замедлить выполнение запроса, т.к. сервер будет тратить дополнительные ресурсы на проверку каждой записи. Обычно применяется в запросах, использующих агрегатные функции.

Элементы языка SQL

Оператор SELECT

Расчет значений вычисляемых столбцов

Для расчета значений вычисляемых столбцов результирующего НД используются арифметические выражения. При этом в списке возвращаемых столбцов после SELECT вместо имени вычисляемого столбца указывается выражение:

SELECT [DISTINCT | ALL ]

{ * | <значение1> [,<значение2> …], <выражение1>[AS <имя_столбца>] …} FROM <таблица1> [ , <таблица2> … ]

Пример:

SELECT R.*, T.ZENA, R.KOLVO*T.ZENA AS STOIM FROM RASHOD R, TOVARY T

WHERE R.TOVAR = T.TOVAR

AS STOIM – необязательное присвоение имени вычисляемому столбцу

Элементы языка SQL

Оператор SELECT

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

Агрегатные функции предназначены для вычисления итоговых значений операций над всеми записями НД. К агрегатным относятся следующие функции:

COUNT(<выражение>) – число вхождений выражения в результирующий НД;

SUM(<выражение>) – суммирует значение выражения;

AVG(<выражение>) – находит среднее значение;

MAX(<выражение>) – определяет максимальное значение;

MIN(<выражение>)- определяет минимальное значение.

Примеры:

SELECT COUNT(DISTINCT POKUP) AS COUNT_POKUP FROM RASHOD;

-----------------------

SELECT SUM(R.KOLVO*T.ZENA) AS OBS_ZENA FROM RASHOD R, TOVARY T

WHERE (R.TOVAR = T.TOVAR)

Элементы языка SQL

Оператор SELECT

Группировка записей

Иногда требуется получить агрегированные значения не по всему результирующему НД, а по каждой из входящих в него групп записей, характеризующихся одинаковым значением какого-либо столбца. Для этого перед предложением WHERE вводится предложение:

GROUP BY столбец [ , столбец1 … ]

Примеры:

SELECT R.TOVAR, SUM(R.KOLVO*T.ZENA) FROM RASHOD R, TOVARY T

WHERE R.TOVAR = T.TOVAR GROUP BY R.TOVAR, R.DAT_RASH

---------------------------------------------------

SELECT DAT_RASH, COUNT(DISTINCT POKUP) FROM RASHOD

GROUP BY DAT_RASH

Элементы языка SQL

Оператор SELECT

Наложение ограничений на группировку записей

Если нужно в результирующем НД выдавать агрегацию не по всем группам, а только по группам, которые отвечают некоторому условию то после GROUP BY указывается предложение :

HAVING <агрегатная функция> <отношение> <значение>

Агрегатная функция – одна из функций MIN, MAX, AVG, SUM

Отношение – одна из операций отношения.

Значение – константа, результат вычисления выражения или единичное значение, возвращаемое вложенным оператором SELECT.

Пример:

SELECT POKUP, MIN(KOLVO) FROM RASHOD

GROUP BY POKUP

HAVING MIN (KOLVO) >= 100

Элементы языка SQL

Оператор SELECT

Наложение ограничений на группировку записей

Отличие HAVING от WHERE:

HAVING – исключает из результирующего НД группы с результатами агрегированных значений;

WHERE – исключает из расчета агрегатных значений по группировкам записи, не удовлетворяющие условию;

В условии поиска WHERE нельзя указывать агрегатную функцию.

Элементы языка SQL

Оператор SELECT: задание сложных условий поиска

Использование логических выражений

Сложные логические выражения строятся при помощи операторов AND, OR и NOT.

Замечание:

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

Пример:

SELECT R.*, T.ZENA

FROM RASHOD R, TOVARY T WHERE R.TOVAR = T.TOVAR AND

(R.KOLVO <= 30 OR R.KOLVO >= 3000) AND R.POKUP IS NOT NULL

ORDER BY R.KOLVO

Элементы языка SQL

Оператор SELECT: задание сложных условий поиска

Сравнение столбца с результатом вычисления выражения

<выражение> <оператор> <столбец>

или аналогичный способ

<столбец> <оператор> <выражение>

Результат вычисления выражения сравнивается содержимым указанного столбца.

Пример:

SELECT R.DAT_RASH, R.TOVAR, T.ZENA FROM RASHOD R, TOVAR T

WHERE R.TOVAR = T.TOVAR AND T.ZENA > (120 / R.KOLVO) ORDER BY R.DAT_RASH

Элементы языка SQL

Оператор SELECT: задание сложных условий поиска

Использование BETWEEN

<значение> [ NOT ] BETWEEN <значение1> AND <значение2>

Указать значение, которое должно находиться в интервале между значением1 и значением2.

Пример:

SELECT *

FROM RASHOD

WHERE KOLVO BETWEEN 1000 AND 3000

Соседние файлы в папке Презентации по технологиям БД