CREATE VIEW
CREATE VIEW 语句用于创建逻辑视图。
视图,也称为逻辑视图,是一个虚拟表,它的数据来源于对其他现有物理表的查询。因此,视图不使用物理存储,对视图的所有查询都等同于用于构建视图的查询语句的子查询。
有关 StarRocks 支持的物化视图的信息,请参阅同步物化视图和异步物化视图。
从 v3.4.1 版本开始,StarRocks 支持安全视图。您可以限制没有视图引用的基表的 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 | 用于创建视图的查询语句。它可以是 StarRocks 支持的任何查询语句。 |
使用说明
- 查询视图需要对视图及其对应的基表具有 SELECT 权限。
- 如果用于构建视图的查询语句由于基表的 Schema Change 而无法执行,则在查询视图时 StarRocks 会返回错误。
示例
示例 1:在example_db
中创建一个名为example_view
的视图,该视图针对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_db
中创建一个名为example_view
的视图,该视图针对表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_db
中创建一个名为example_view
的安全视图,该视图针对example_table
进行查询。该视图仅允许具有基表example_table
的 SELECT 权限的用户提交的查询。
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;