视图(逻辑视图)是封装一个或多个 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;