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