CREATE VIEW
CREATE VIEW создает логическое представление.
Представление, или логическое представление, - это виртуальная таблица, данные которой получаются из запроса к другим существующим физическим таблицам. Таким образом, представление не использует физическое хранилище, и все запросы к представлению эквивалентны подзапросам выражения запроса, использованного для создания представления.
Информацию о материализованных представлениях, поддерживаемых Selena, см. в разделах Синхронные материализованные представления и Асинхронные материализованные представления.
Начиная с версии v1.5.2, Selena поддерживает безопасные представления. Вы можете ограничить доступ пользователей без привилегии SELECT на базовые таблицы, на которые ссылается представление, от выполнения запросов к представлению.
Только пользователи с привилегией CREATE VIEW для конкретной базы данных могут выполнять эту операцию.
Синтаксис
CREATE [OR REPLACE] VIEW [IF NOT EXISTS]
[<database>.]<view_name>
(
<column_name>[ COMMENT 'column comment']
[, <column_name>[ COMMENT 'column comment'], ...]
)
[COMMENT 'view comment']
[SECURITY {NONE | INVOKER}]
AS <query_statement>
Параметры
| Параметр | Описание |
|---|---|
| OR REPLACE | Заменить существующее представление. |
| database | Имя базы данных, в которой находится представление. |
| view_name | Имя представления. Для ознакомления с соглашениями об именовании см. Системные ограничения. |
| column_name | Имя столбца(ов) в представлении. Обратите внимание, что столбцы в представлении и столбцы, запрашиваемые в query_statement, должны совпадать по количеству. |
| COMMENT | Комментарий к столбцу в представлении или к самому представлению. |
| SECURITY | Указывает контекст безопасности, который будет использоваться при проверке прав доступа во время вызова представления. Допустимые значения:
|
| query_statement | Выражение запроса, используемое для создания представления. Может быть любым выражением запроса, поддерживаемым Selena. |
Примечания по использованию
- Запрос к представлению требует наличия привилегии SELECT на представление и на соответствующие базовые таблицы.
- Если выражение запроса, использованное для создания представления, не может быть выполнено из-за изменения схем ы в базовых таблицах, Selena вернет ошибку при запросе к представлению.
Примеры
Пример 1: Создать представление с именем example_view в example_db с агрегирующим запросом к example_table.
CREATE VIEW example_db.example_view (k1, k2, k3, v1)
AS
SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
WHERE k1 = 20160112 GROUP BY k1,k2,k3;
Пример 2: Создать представление с именем example_view в базе данных example_db с агрегирующим запросом к таблице example_table и указать комментарии для представления и каждого столбца в нем.
CREATE VIEW example_db.example_view
(
k1 COMMENT 'first key',
k2 COMMENT 'second key',
k3 COMMENT 'third key',
v1 COMMENT 'first value'
)
COMMENT 'my first view'
AS
SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
WHERE k1 = 20160112 GROUP BY k1,k2,k3;
Пример 3: Создать безопасное представление с именем example_view в example_db с запросом к example_table. Представление разрешает запросы только от пользователей с привилегией SELECT на базовую таблицу example_table.
CREATE VIEW example_db.example_view (k1, k2, k3, v1)
COMMENT 'my secure view'
SECURITY INVOKER
AS
SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
WHERE k1 = 20160112 GROUP BY k1,k2,k3;