创建和管理视图
视图允许用户保存常用的或者复杂的查询。视图在磁盘上并没有被物理存储,当用户访问视图时查询会作为一个子查询运行。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。
创建视图
1
|
CREATE OR REPLACE VIEW MyView AS SELECT * FROM tpcds.customer WHERE c_customer_sk < 150; |
![](https://support.huaweicloud.com/devg-910-dws/public_sys-resources/note_3.0-zh-cn.png)
CREATE VIEW中的OR REPLACE可有可无,当存在OR REPLACE时,表示若以前存在该视图就进行替换。
查看视图
- 查看MyView视图,查询结果为当前实时数据。
1
SELECT * FROM myview;
- 查看当前用户下的视图。
1
SELECT * FROM user_views;
- 查看所有视图。
1
SELECT * FROM dba_views;
- 查看某视图的具体信息。
执行如下命令查询dba_users视图的详细信息。
1 2 3 4 5 6 7 8
\d+ dba_users View "PG_CATALOG.DBA_USERS" Column | Type | Modifiers | Storage | Description ----------+-----------------------+-----------+----------+------------- USERNAME | CHARACTER VARYING(64) | | extended | View definition: SELECT PG_AUTHID.ROLNAME::CHARACTER VARYING(64) AS USERNAME FROM PG_AUTHID;
重建视图
使用ALTER VIEW命令在不键入查询语句的情况下重建视图。
1
|
ALTER VIEW myview REBUILD; |
删除视图
1
|
DROP VIEW myview; |
DROP VIEW ... CASCADE命令也可以级联删除依赖此视图的对象。 例如,如果A视图依赖于将要被删除的B视图,那么A视图也将被删除。 如果没有CASCADE选项,这个DROP VIEW命令将会失败。