Структура языка SQL
Реализация базового и промежуточного уровней языка SQL, создание SQL-ориентированных СУБД. Конструирование схем баз данных и их визуальные инструменты. Рассмотрение уровней изоляции транзакций. Основные методы реализации уровней изоляции и свойств ACID.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лекция |
Язык | русский |
Дата добавления | 06.03.2012 |
Размер файла | 139,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Агрегатные функции и результаты запросов
Агрегатные функции (в стандарте SQL/89 они называются функциями над множествами) определяются в SQL/89 следующими синтаксическими правилами:
<set function specification> ::=
COUNT(*)
|<distinct set function>
|<all set function>
<distinct set function> ::=
{ AVG MAX MIN SUM COUNT }
(DISTNICT <column specification>)
<all set function> ::=
{ AVG MAX MIN SUM } ([ALL] <value expression>)
Как видно из этих правил, в стандарте SQL/89 определены пять стандартных агрегатных функций: COUNT - число строк или значений, MAX - максимальное значение, MIN - минимальное значение, SUM - суммарное значение и AVG - среднее значение.
Семантика агрегатных функций
Агрегатные функции предназначены для того, чтобы вычислять некоторое значение для заданного множества строк. Таким множеством строк может быть группа строк, если агрегатная функция применяется к сгруппированной таблице, или вся таблица. Для всех агрегатных функций, кроме COUNT(*), фактический (т.е. требуемый семантикой) порядок вычислений следующий: на основании параметров агрегатной функции из заданного множества строк производится список значений. Затем по этому списку значений производится вычисление функции. Если список оказался пустым, то значение функции COUNT для него есть 0, а значение всех остальных функций - null.
Пусть T обозначает тип значений из этого списка. Тогда результат вычисления функции COUNT - точное число с масштабом и точностью, определяемыми в реализации. Тип результата значений функций MAX и MIN совпадает с T. При вычислении функций SUM и AVG тип T не должен быть типом символьных строк, а тип результата функции - это тип точных чисел с определяемыми в реализации масштабом и точностью, если T - тип точных чисел, и тип приблизительных чисел с определяемой в реализации точностью, если T - тип приблизительных чисел.
Вычисление функции COUNT(*) производится путем подсчета числа строк в заданном множестве. Все строки считаются различными, даже если они состоят из одного столбца со значением null во всех строках.
Если агрегатная функция специфицирована с ключевым словом DISTINCT, то список значений строится из значений указанного столбца. (Подчеркнем, что в этом случае не допускается вычисление арифметических выражений!) Далее из этого списка удаляются неопределенные значения, и в нем устраняются значения-дубликаты. Затем вычисляется указанная функция.
Если агрегатная функция специфицирована без ключевого слова DISTINCT (или с ключевым словом ALL), то список значений формируется из значений арифметического выражения, вычисляемого для каждой строки заданного множества. Далее из списка удаляются неопределенные значения, и производится вычисление агрегатной функции. Обратите внимание, что в этом случае не допускается применение функции COUNT!
Замечание: оба ограничения, указанные в двух предыдущих абзацах, являются более техническими, чем принципиальными, и могут отсутствовать в конкретных реализациях. Тем не менее, это ограничения стандарта SQL/89, и их нужно придерживаться при мобильном программировании.
Результаты запросов
Агрегатные функции можно разумно использовать в спецификации курсора, операторе выборки и подзапросе после ключевого слова SELECT (будем называть в этом подразделе все такие конструкции списком выборки, не забывая о том, что в случае подзапроса этот список состоит только из одного элемента), и в условии выборки раздела HAVING. Стандарт допускает более экзотические использования агрегатных функций в подзапросах (агрегатная функция на группе кортежей внешнего запроса), но на практике они встречаются очень редко.
Рассмотрим различные случаи применения агрегатных функций в списке выборки в зависимости от вида табличного выражения.
Если результат табличного выражения R не является сгруппированной таблицей, то появление хотя бы одной агрегатной функции от множества строк R в списке выборки приводит к тому, что R неявно рассматривается как сгруппированная таблица, состоящая из одной (или нуля) групп с отсутствующими столбцами группирования. Поэтому в этом случае в списке выборки не допускается прямое использование спецификаций столбцов R: все они должны находиться внутри спецификаций агрегатных функций. Результатом запроса является таблица, состоящая не более чем из одной строки, полученной путем применения агрегатных функций к R.
Аналогично обстоит дело в том случае, когда R представляет собой сгруппированную таблицу, но табличное выражение не содержит раздела GROUPBY (и, следовательно, содержит раздел HAVING). Если в случае предыдущего абзаца имелись два варианта формирования списка выборки: только с прямым указанием столбцов R или только с указанием их внутри спецификаций агрегатных функций, то в данном случае возможен только второй вариант. Результат табличного выражения явно объявлен сгруппированной таблицей, состоящей из одной группы, и результат запроса можно формировать только путем применения агрегатных функций к этой группе строк. Опять результатом запроса является таблица, состоящая не более чем из одной строки, полученной путем применения агрегатных функций к R.
Наконец, рассмотрим случай, когда R представляет собой "настоящую" сгруппированную таблицу, т.е. табличное выражение содержит раздел GROUPBY и, следовательно, определен по крайней мере один столбец группирования. В этом случае правила формирования списка выборки полностью соответствуют правилам формирования условия выборки раздела HAVING: допускается прямое использование спецификации столбцов группирования, а спецификации остальных столбцов R могут появляться только внутри спецификаций агрегатных функций. Результатом запроса является таблица, число строк в которой равно числу групп в R, и каждая строка формируется на основе значений столбцов группирования и агрегатных функций для данной группы.
Размещено на Allbest.ru
Подобные документы
Конечная цель любой компьютерной программы – управление аппаратными средствами. Пирамидальная конструкция уровней ПО. Характеристика базового, системного и служебного уровней. Системное, прикладное, инструментальное и сервисное программное обеспечение.
контрольная работа [27,7 K], добавлен 03.01.2011Определение абсолютных и относительных показателей изменения уровней ряда динамики. Определение абсолютного размера одного процента прироста и средних показателей ряда динамики. Реализация численных методов при использовании алгоритмического языка Pascal.
курсовая работа [174,9 K], добавлен 06.10.2013Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.
презентация [11,9 K], добавлен 23.10.2013Интерфейсные средства СУБД MS Access 2003. Проектирование схемы данных. Создание составного отчёта, содержащего диаграмму. Группировка и сортировка в отчётах. Использование языка программирования VBА, создание макросов. Разработка программы и функций.
курсовая работа [5,2 M], добавлен 20.06.2010Взаимодействие уровней в процессе связи, его эталонная модель для открытых систем. Функции уровней модели OSI. Сетезависимые протоколы, а также протоколы, ориентированные на приложениях, их сравнительное описание и использование в современных сетях.
реферат [361,5 K], добавлен 16.04.2015Краткая история развития СУБД ORACLE, основные понятия и определения, архитектура. Принципы работы с СУБД ORACLE. Разработка баз данных, средства и технологии их реализации; возможности процедурного языка PL/SQL. Приемы администрирования СУБД ORACLE.
презентация [609,2 K], добавлен 14.02.2014Общие сведения о компьютерном математическом моделировании. Принцип построения и функционирования распределенных систем. Технологии объектного связывания данных. Механизм изоляции транзакций и преодоления ситуаций несогласованной обработки данных.
курсовая работа [92,5 K], добавлен 13.12.2014Понятие и концепция базы данных и СУБД. Независимость приложений от организации данных во внешней памяти. Типы данных SQL, таблицы, структура языка и операторы. Преимущества модели реляционного подхода к организации баз данных и ее эффективность.
курсовая работа [69,6 K], добавлен 30.11.2009Различия между существующими диалектами SQL. Стандартизация языка SQL. Концепция баз данных. Эффективность организации данных. Структура языка SQL. Приближенные числовые типы. Интервальный тип данных. Обработка сложно структурированной информации.
курсовая работа [50,7 K], добавлен 29.05.2014Объекты модели хранения данных базы данных ORACLE. Взаимосвязь между логическими структурами. Средства манипулирования данными языка SQL, данными языка SQL. Структура выполнения простейших запросов. Формирование критерия отбора. Сортировка данных.
презентация [120,1 K], добавлен 14.02.2014