![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сгруппированные представления
Запрос, определяющий представление, может содержать предложение GROUP BY. Представление такого типа называется сгруппированным, поскольку данные в нем являются результатом запроса с группировкой. Сгруппированные представления выполняют ту же функцию, что и запросы с группировкой. В них родственные строки данных объединяются в группы, и для каждой группы в таблице результатов запроса создается одна строка, содержащая итоговые данные по этой группе. С помощью сгруппированного представления запрос с группировкой превращается в виртуальную таблицу, к которой в дальнейшем можно обращаться. В определении сгруппированного представления всегда содержится список имен столбцов. В этом списке присваиваются имена тем столбцам сгруппированного представления, которые являются производными от статистических функций, таких как SUM() и min(). В нем также может быть задано измененное имя сгруппированного столбца. После создания сгруппированного представления его можно использовать для упрощения запросов. В отличие от горизонтальных и вертикальных представлений, каждой строке сгруппированного представления не соответствует какая-то одна строка исходной таблицы. Сгруппированное представление не является просто фильтром исходной таблицы, скрывающим некоторые строки и столбцы. Оно отображает исходную таблицу в виде резюме, поэтому поддержка такой виртуальной таблицы требует от СУБД значительного объема вычислений. К сгруппированным представлениям можно обращаться с запросами точно так же, как и к более простым представлениям. Однако сгруппированные запросы нельзя обновлять. Объясняется это следующим образом, так как каждая строка сгруппированного представления соответствует группе строк исходной таблицы, а столбцы, как правило, содержат вычисляемые данные, невозможно преобразовать запрос на обновление сгруппированного представления в запрос на обновление строк исходной таблицы. Таким образом, сгруппированные представления функционируют как представления, доступные " только для чтения", к которым можно обращаться с запросами на выборку, но не на обновление. Для сгруппированных представлений справедливы ограничения, накладываемые в SQL на вложенные статистические функции. Т.е. применение допустимой инструкции SELECT может вызвать ошибку, если одна из исходных таблиц является сгруппированным представлением. Такую ситуацию предвидеть невозможно; когда СУБД выдает сообщение об ошибке, необходимо просто определить ее причину.
Что значит вставить, удалить или обновить строку представления? Ясно, что для некоторых типов представлений эти операции можно преобразовать в эквивалентные операции по отношению к исходным таблицам представления. Обновление представлений — непростой вопрос, который является предметом исследований уже не один год.
|