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

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

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

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

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

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

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

创建视图

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

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

说明:

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

  • query_stmt 为任意支持的 SQL

举例

  • 在 example_db 上创建视图 example_view

    1. CREATE VIEW example_db.example_view (k1, k2, k3, v1)
    2. AS
    3. SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
    4. WHERE k1 = 20160112 GROUP BY k1,k2,k3;
  • 创建一个包含 comment 的 view

    1. CREATE VIEW example_db.example_view
    2. (
    3. k1 COMMENT "first key",
    4. k2 COMMENT "second key",
    5. k3 COMMENT "third key",
    6. v1 COMMENT "first value"
    7. )
    8. COMMENT "my first view"
    9. AS
    10. SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
    11. WHERE k1 = 20160112 GROUP BY k1,k2,k3;