CREATE VIEW
Описание
Эта инструкция используется для создания логического представления на основе указанного запроса.
Синтаксис
CREATE VIEW [IF NOT EXISTS] [<db_name>.]<view_name>
[(<column_definition>)]
[AS] <query_stmt>
Где:
column_definition:
<column_name> [COMMENT '<comment>'] [,...]
Обязательные параметры
1. <view_name>
Идентификатор (то есть имя) представления; он должен быть уникальным в базе данных, в которой создаётся представление.
Идентификатор должен начинаться с буквы (если включена поддержка имён в Unicode, это может быть символ любого языка) и не может содержать пробелы или специальные символы, если только вся строка идентификатора не заключена в обратные кавычки (например,My View).
В качестве идентификатора нельзя использовать зарезервированные ключевые слова.
Подробнее см. требования к идентификаторам и зарезервированные ключевые слова.
2. <query_stmt>
Запрос SELECT, определяющий представление.
Необязательные параметры
1. <db_name>
Имя базы данных, в которой находится представление. Если не указано, по умолчанию используется текущая база данных.
2. <column_definition>
Определения столбцов представления.
Где:
1.<column_name>
Имя столбца.
2.<comment>
Комментарий к столбцу.
Требования к управлению доступом
| Привилегия | Объект | Примечания |
|---|---|---|
| CREATE_PRIV | База данных | Для базы данных требуется привилегия CREATE_PRIV. |
| SELECT_PRIV | Таблица, представление | Для таблиц, представлений или материализованных представлений, к которым выполняется запрос, требуется привилегия SELECT_PRIV. |
Примечания
- Представления являются логическими и не имеют физического хранилища. Все запросы к представлению эквивалентны запросам к соответствующему подзапросу.
- Создание и удаление представлений не влияют на данные в базовых таблицах.
Примеры
-
Создание представления
example_viewв базе данныхexample_dbCREATE 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; -
Создание представления с определениями столбцов
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;