1632
правки
Изменения
м
<font color = green> -- Представление для подсчета текущих средних цен в магазинах: </font> <font color = blue>create view <font color = black>AveragePrice(ShopId, AvgPrice) <font color = blue>as select <font color = black>ShopId, avg(Price) <font color = blue>from <font color = black>Prices</fontcolor = black>
<font color = green> -- Представление для получения названия магазина </font> <font color = green> -- с текущими ценами, на каждом из товаров: </font>
<font color = green> -- МП Материализованное представление для подсчета текущих средних цен в магазинах, обновляемое раз в день:</font>
rollbackEdits.php mass rollback
== Синтаксис ==
Объявление представления с именем <code><font color = red>имя</font color = black></code> для представления запроса <code><font color = red>запрос</font color = black></code>: <font color = blue>create view <font color = red>имя<font color = blue> as <font color = red>запрос<font color = greenblack> -- объявление Удаление представления по имени <code><font color = red>имя</fontcolor = black></code>: <font color = blue>drop view <font color = red>имя<font color = green> -- удаление представления по его имени</fontblack>
==== Примеры ====
<font color = blue>create view <font color = black>ShopItem(SN, PN, P) <font color = blue>as select <font color = black>s.Name, i.Name, p.Price</font>
<font color = blue>from <font color = black>Shops s <font color = blue>natural join <font color = black>Prices p <font color = blue>natural join <font color = black>Items i<font color = black></font>
==== Разность ====
Для [[Реляционная алгебра: операции над множествами | разности]] <tex>R_1 \setminus R_2</tex> вставка производится в <tex>R_1</tex>.
Удаление также производится из <tex>R_1</tex>.
{{Определение
|id=def2
|definition='''Материализованное представление''' (МП) {{---}} в отличие от [[#def1 | представления]], является «слепком» данных на определенный момент времени, который хранящимся физически в виде отдельной таблицы и не изменяется при изменении базовой версии.
}}
Преимущества:
* быстрота выборки: МП материализованное представление может быть сформировано на основе сложного подзапроса, и, из-за того, что данные будут сохранены, этот запрос не будет пересчитываться повторно;
* возможность «фиксации» данных;
Недостатки:
* для работы с актуальными данными, появляется необходимость обновления МПматериализованное представление;
* физически хранимые данные могут занимать большие объемы памяти;
<font color=red>[</font>
<font color=blue> refresh <font color=red>[{<font color=blue>fast<font color=grey>|<font color=blue>complete<font color=red>}] [<font color=blue>on <font color=red>{<font color=blue>commit<font color=grey>|<font color=blue>demand<font color=red>}]</font>
<font color=red> [<font color=blue>start with <font color=red>время] [<font color=blue>next <font color=red>время] <font color=green> -- в некоторых БД</font>
<font color=red>]</font>
<font color=blue>as <font color=red>запрос<font color = black>
Некоторые БД поддерживают указание времени первого и последующих обновлений:
<font color=red>[<font color=blue>start with <font color=red>время] [<font color=blue>next <font color=red>время]<font color=black>
Режимы обновления:
* <code>demand</code>: при вызове команды <code>refresh materialized view</code>;
<font color=blue>refresh materialized view <font color=red>имя</fontcolor = black>
==== Пример ====
<font color=blue>create materialized view <font color=black>AveragePrice</font>
<font color=blue>refresh next <font color=black>dateadd(day, now(), 1)</font>