创建和管理视图#

视图(View)是从一个或多个表(或视图)导出的虚拟表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图本身不存储实际数据,数据库中只存储视图的定义。在对视图的数据进行操作时,系统会根据视图定义去操作与视图相关联的基本表。

创建视图#

创建视图使用 CREATE VIEW 命令。例如,用户如果只对 weather 基本表中的温度感兴趣。可以建立一个视图:

 1create table weather (
 2    city            varchar(80),
 3    temp_lo         int,           -- low temperature
 4    temp_hi         int,           -- high temperature
 5    prcp            real,          -- precipitation
 6    date            date
 7);
 8
 9create view myview as
10   select city, temp_lo, temp_hi
11   from weather;
12
13select * from myview; # 不再需要每次写出投影的列。

视图可以简化用户的查询,但视图本身不存储数据,且在某些场景下可能对查询优化带来挑战,建议合理使用。

删除视图#

删除视图时,使用 DROP VIEW 命令。

1DROP VIEW myview;

如果有其他对象依赖于当前要删除的视图,需使用 CASCADE 或 RESTRICT 关键字。

1DROP VIEW myview CASCADE;
2
3DROP VIEW myview RESTRICT;

备注

OushuDB 中的视图是只读的。系统不允许在视图上插入、更新或删除。通过将视图上的重写规则创建为其他表上的适当操作,可以获得可更新视图的效果。