- •Введение в язык sql92.
- •О нотации грамматики языка sql.
- •Оператор select.
- •Выбор строк (фраза where).
- •Сортировка результата (фраза order by).
- •Стандартные обобщающие функции языка sql.
- •Группировка результата (фраза group by).
- •Примеры простой группировки.
- •Подзапросы и другие операции.
- •Многотабличные запросы.
- •Операции union, intersect, except.
- •Операции обновления базы данных.
- •Insert into table_name [ ( colomn_list ) ]
- •Values ( data_value_list )
- •Определение данных в языке sql.
- •Типы данных языка isq sql92.
- •Integer (можно сократить до int)
- •Скалярные операторы языка sql.
- •Создание баз данных.
- •Представления (виды).
Сортировка результата (фраза order by).
“Самая необходимая наука – это наука забывать ненужное”
АНТИСФЕН из Афин ок.444-ок.365гг. до н.э.
В обшем случае неважен порядок следования строк в таблице результата. Однако их можно отсортировать в случае необходимости, если в операторе SELECTиспользоват фразуORDER BY. Описание фразы включает в себя список подмножества идентификаторов столбцов таблицы результата запроса, по которым требуется упорядочить строки. Идентификатор столбца может принимать значения его имени (номера отвергнуты стандартомISO). Упорядочить строки можно либо в порядке возрастания (ASC), либо убывания(DESC) одного или комбинации столбцов независимо от того есть значения или нет. Фраза ORDER BY всегда должна быть последняя в оператореSELECT.
Пример сортировки по столбцам.
SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >
FROM имя_исходной_таблицы
ORDER BY имя_столбца_1, имя_столбца_2 DESC;
В языке SQL в столбцах используются базовые типы данных хранения информации, на которых всегда задается отношение порядка. Прямое или инверсное направление сортировки задается ключами ASC и DESC. Если мы имеем более одного столбца, то используется сложная сортировка: сначала мы производим упорядочивание по первому столбцу, а в случае их совпадения по второму и т.д. Очевидно, что порядок сортировки таблицы результата операции выбора существенным образом зависит от порядка следования имен столбцов в фразе оператораORDER BY.
Стандартные обобщающие функции языка sql.
“Братская близость единомыслящих крепче всяких стен”
АНТИСФЕН из Афин ок.444-ок.365гг. до н.э.
Все функции оперируют в единственном столбце таблицы и возвращают единственное значение. Функции COUNT, MIN и MAX применимы как числовым, так и символьным полям, а SUM и AVG только к числовым. Все функции кроме COUNT сначала исключают все пустые значения NULL, а затем оперируют с оставшимися. Вариант COUNT(*) – особый, т.к. учитывает все строки в таблице результата. Если необходимо исключить дублирующие строки, то устанавливается ключевое слово DISTINCTиALL в обратном случае (что и подразумевается по умолчанию).
Обобщающие функции могут использоваться в списке предложения SELECT и в составе предложенияHAVING. Во всех других случаях использование этих функций недопутимо. Часто ошибка состоит в том, что в запросе с обобщающими функциями не используется фразаGROUP BY, обеспечивающая объединение данных в группы. Без этого ни один из элементов списка предложенияSELECT не может включать в себя каких либо ссылок на столбцы. Причина - в неиспользовании группировки при обращении к значению поля в оператореSELECT.
Обобщающие функции подобных заключительному выводу в итоговых таблицах – они содержат своеобразные значения «итого». Все детальные данные сжимаются в одно значение (часто называемое агрегатом). Если в сложных отчетах надо формировать и промежуточные данные, то надо использовать фразу GROUP BY. Её использование будет рассмотрено далее, а пока мы ограничимся простейшей формой группирующего запроса.
Использование функции COUNT(*).
SELECT COUNT(*) AS count
FROM имя_исходной_таблицы
WHERE имя_столбца_1 >500;
Мы ограничиваем посчет строками, содержащими в первом поле значения сторого больше 500. В результате мы имеем новую таблицу с столбцом по имени count и со строкой содержащей значение общего количества строк в исходной таблице.
Использование функции COUNT(DISTINCT).
SELECT COUNT(DISTINCT имя столбца_1) AS count
FROM имя_исходной_таблицы
WHERE имя_столбца_2 BETWEEN ‘1-May-98’ AND ‘31-May-98’;
В данном случае мы посчитываем уникальные значения в первом столбце исходной таблицы в заданном литералами интервале времени (подразумевается типа datе для второго столбца). В результате мы имеем новую таблицу с столбцом по имени count и со строкой содержащей значение общего количества уникальных значений в столбце 1 исходной таблицы.
Использование функции COUNT и SUM.
SELECT COUNT(имя столбца_1) AS count, sum((имя столбца_2) AS sum
FROM имя_исходной_таблицы
WHERE имя_столбца_3 = ‘Программист’;
Ограничиваем рассмотрение исходной таблицы только строками, в которой в третьем поле (столбце) встречается значение “Программист”. Затем посчитываем общее их количество по первому полю и суммируем все значения во втором. Результат есть таблица с столбцами count и sum из одной строки.
Использование функции MIN, MAX и AVG.
SELECT MIN(имя) AS min, MAX(имя) AS max, AVR(имя) AS avr
FROM имя_исходной_таблицы
Результат запроса есть таблица с тремя столбцами: min, max, avr. Вычисленные обобщающие значения столбца имя в исходной таблице записываются в соответствующих полях единственной строки таблицы результата.