跳到主要内容
跳到主要内容

逻辑视图

视图(逻辑视图)是封装一个或多个 SELECT 语句的存储查询。视图在执行时动态访问并计算数据库数据。视图是只读的,可以引用表和其他视图的任意组合。

可以使用视图实现以下用途:

  • 出于简化访问或安全访问的目的,让用户看不到复杂的 SELECT 语句。例如,可以创建仅显示用户所需的各表中数据的视图,同时隐藏这些表中的敏感数据。

  • 将可能随时间而改变的表结构的详细信息封装在一致的用户界面后。

与物化视图不同,视图不实体化,也就是说,它们不在磁盘上存储数据。因此,存在以下限制:

  • 当底层表数据发生变更时,Doris 不需要刷新视图数据。但是,访问和计算数据时,视图也会产生一些开销。

  • 视图不支持插入、删除或更新操作。

创建视图

用于创建一个逻辑视图的语法如下:

CREATE VIEW [IF NOT EXISTS]
[db_name.]view_name
(column1[ COMMENT "col comment"][, column2, ...])
AS query_stmt

说明:

  • 视图为逻辑视图,没有物理存储。所有在视图上的查询相当于在视图对应的子查询上进行。

  • query_stmt 为任意支持的 SQL

举例

  • 在 example_db 上创建视图 example_view

    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;
  • 创建一个包含 comment 的 view

    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;