Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
7
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

8.2 Структура запросов sql. Запросы с условием.

    Условие формируется в фразе WHERE и содержит имена полей. Причем поля не обязательно должны присутствовать в фразе SELECT. В условии могут оспользоваться операторы сравнения:

  1. =, !=, (, <, >, ), >=, <=

  1. AND, OR, NOT

  1. IN, BETWEEN, LIKE, IS NULL (NOT IS NULL)

LIKE позволяет указывать приближенные значения (CHAR и VARCHAR). Применяется для поиска подстрок. В выражениях операции LIKE допускается использование шаблона, в котором разрешено использовать все алфавитно - цифровые символы (с учетом регистра). При этом два символа имеют специальное назначение: 1) замещение любого количества символов, в том числе и нулевого; 2) замещение одного символа.

В SQL поддерживается неопределенное значение NULL. Например, найти покупателя, город которого неопределен Агрегатные функции.

COUNT() - подсчитывает количество строк с непустым (не NULL) значением указанной колонки

COUNT(*) - подсчитывает общее количество строк, удовлетворяющих условию, включая пустые (NULL)

SUM() - суммирует все значения в указанной колонке

AVG() - вычисляет среднее значение для указанной колонки

MAX() - находит максимальное значение в указанной колонке

MIN() - находит минимальное значение в указанной колонке

Агрегатные функции записываются в фразе SELECT.

Например, посчитать количество городов

SELECT COUNT (DISTINCT ГородПокупателя) AS 'Количество'

FROM C

Запросы с группировкой.

    Записи данных могут быть сгруппированы по некоторому признаку. Группу образуют записи с одинаковыми значениями в полях, перечисленных в выражении GROUP BY. При группировании записей их проще анализировать и обрабатывать, например, с помощью статистических (агрегатных) функций. C условием группировки: HAVING. Условие HAVING выполняется для всей группы в целом.

Сортировка (упорядочивание) выходных полей.

Сортировка представляет собой упорядочивание записей по возрастанию или убыванию значений полей. Список полей, по которым выполняется сортировка, указывается в выражении ORDER BY. Порядок полей в этом выражении определяет порядок сортировки: сначала записи упорядочиваются по значениям поля, указанного в этом списке первым, затем записи, имеющие одинаковое значение первого поля, упорядочиваются по второму полю и т.д. Поля в списке обозначаются именами или номерами, которые соответствуют номерам полей в списке полей после слова SELECT. По умолчанию сортировка происходит в порядке возрастания значений полей. Для указания обратного порядка сортировки по какому - либо полю нужно указать после имени этого поля описатель DESC. Поле, по которому выполняется сортировка должно быть указано в SELECT, т.е. закрытой сортировки не должно быть.

Объединение таблиц (команда union).

С помощью раздела UNION можно выполнять объединение данных из нескольких таблиц. Структура раздела UNION следующая:

{< query specification > | (< query expression >)}

UNION [ALL]

{< query specification > | (< query expression >)}

[UNION [ALL] < query specification > | (< query expression >)

[..n] ]

 Конструкция UNION вставляется между двумя запросами, возвращающими одинаковый набор колонок. В результат будут включены колонки как из первой, так и из второй таблицы. Указание ключевого слова ALL предписывает включать в результат дублирующиеся строки. По умолчанию дублирующиеся строки в результат не включаются. Запросы с несколькими таблицами (операция СОЕДИНЕНИЕ в реляционной алгебре).

В запросе поля ставятся с префиксом через точку. Префиксом является имя таблицы.

<владелец_таблицы>.<имя_таблицы>.<поле>

Различают внутреннее и внешнее соединения. Внутреннее соединение представляет собой простейший случай, когда после слова SELECT перечисляются поля разных таблиц. В фразе WHERE указываются условия соединения. Если WHERE не указано, то получается декартовое произведение.

Использование внутреннего соединения применимо не всегда. Например, при использовании внутреннего соединения таблиц с отношением "один ко многим" результат выполнения запроса может содержать избыточную информацию. При внутреннем соединении все таблицы, поля которых указываются в SQL - запросе, являются равноправными. При внешнем соединении таблиц можно указать, какая из таблиц будет главной, а какая - подчиненной. При использовании внешнего соединения операнд FROM имеет следующий формат:

JOIN ON - соединение выполняется с условием.

JOIN USING - выполняется при условии равенства (в скобках перечисляются общие столбцы). INNER - выполняется по умолчанию.

LEFT - левое внешнее соединение включает все строки из левой таблицы и те строки из правой таблицы, для которых вып-ся условие. Для тех строк из таблицы А, для которых не выполняется условие, в столбцы из таблицы В заносится NULL. Правое внешнее соединение (RIGHT) наоборот включает все строки из правой таблицы. Полное соединение (FULL) включает все строки из 2-х таблиц. Причем для тех строк, для которых выполняется условие заполнение реальными данными, а для остальных как левое и правое вместе (NULL). CROSS - декартовое произведение. В результате выдаются всевозможные сочетания строк левой и правой таблиц.