更新时间:2024-08-12 GMT+08:00
分享

创建和管理视图

视图允许用户保存常用的或者复杂的查询。视图在磁盘上并没有被物理存储,当用户访问视图时查询会作为一个子查询运行。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。

创建视图

使用CREATE VIEW命令创建新视图。
1
CREATE OR REPLACE VIEW MyView AS SELECT * FROM tpcds.customer WHERE c_customer_sk < 150;

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;

删除视图

使用DROP VIEW命令删除一个视图。
1
DROP VIEW myview;

DROP VIEW ... CASCADE命令也可以级联删除依赖此视图的对象。 例如,如果A视图依赖于将要被删除的B视图,那么A视图也将被删除。 如果没有CASCADE选项,这个DROP VIEW命令将会失败。

相关文档