跳到主要内容
版本: 最新版本-3.5

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指定在视图调用时检查访问权限时要使用的安全上下文。有效值
  • NONE(默认): 只有具有视图 SELECT 权限的用户才能查询视图。
  • INVOKER: 只有同时具有视图和它引用的基表的 SELECT 权限的用户才能查询视图。
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;

相关 SQL