Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Разрешение коллизии имен. Квалифицированные имена и алиасы.




 

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

 

Квалифицированное (полное) имя à Имя таблицы. Имя поля

 

Замечание. Некоторые СУБД способны одновременно манипулировать с таблицами из разных БД – снова, возможно, одноименными, что приводит к необходимости дальнейшего уточнения имен, например

 

Имя БД! Имя таблицы. Имя поля

(синтаксис FoxPro)

 

Применение полных имен не спасает от коллизии в случае, когда команда SELECT ссылается на одну базовую таблицу несколько раз (например, при выборке из декартовой степени (двух копий) одной таблицы или – см. далее, в случае вложенных запросов, т.е. использования одной выборки в предикатах другой выборки). В таких случаях необходимо использовать псевдонимы/алиасы таблиц; последние задают временные имена (копий) таблицы, действительные только на момент выполнения данной выборки;

 

Группировка и групповые вычисления. Опции Group By и Having

 

Синтаксис

GROUP BY List

 

где List – список (перечисление) полей группировки. При этом поля из списка могут быть заданы явно или числовой ссылкой на номер поля в списке выбора (в некоторых версиях также – выражением символьного типа) .

 

 

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

 

- COUNT(Выражение) - количество значений заданного выражения в группе, не равных NULL;

- COUNT(*) - число строк в группе;

- MIN(Выражение) - минимальное значение данного выражения по группе;

- MAX(Выражение) - максимальное значение данного выражения по группе;

- SUM(Числовое_выражение) - сумма значений заданного выражения по группе;

- AVG(Числовое_выражение), - среднее значение заданного выражения по группе;

 

Семантика –

1) производиться разбиение базовой таблицы (декартово произведение базовых таблиц) на группы – классы эквивалентности, для которых поля из заданного списка принимают одинаковые значения.

R1,R2 принадлежат одной группе g » R1 »list R2 » R1(List)=R2(List)

 

3) Для каждой группы вычисляются значения заданных списком выборки функций над группами

 

Select F1(List), …, Fn(List) from T group by List =

{ <F1(g), …, Fn(g)>: g Î T/»list }

 

 

 


Примечание. Использование агрегатных функций возможно и без явного применения опции GROUP BY - в этом случае группой считается вся базовая таблица (декартово произведение базовых таблиц, если их несколько)

 

Опция

HAVING Условие_на_группу

 

по семантике схожа (и часто путается ) с опцией WHERE, но, в отличие от последней, фильтрует не одиночные записи, а группы. Используется только совместно с GROUP BY. Очевидно, задаваемое условие на группу должно ссылаться только на групповые функции. Как правило, это условие является проверкой значений некоторых агрегатных функций - для проверки значений полей списка группировки эффективнее использовать опцию WHERE.

 


Поделиться:

Дата добавления: 2015-01-29; просмотров: 85; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты