更新时间:2025-05-29 GMT+08:00

管理视图

图1 创建和管理视图

背景信息

当用户需要频繁查询多张表的特定字段组合时,可通过定义视图来避免重复编写查询语句。视图通过虚拟表抽象底层表结构,简化常用查询操作。

视图是一种逻辑表,与物理存储的基本表不同,其数据不实际驻留于磁盘。数据库仅保存视图的查询定义,实际数据始终保留在关联的基础表中。当基础表数据发生变更时,视图查询结果将动态同步这些变化。视图如同一个实时数据窗口,允许用户访问其关注的数据镜像。每次访问视图时,系统都会重新执行其定义查询以获取最新数据。

管理视图

操作前请先创建表,步骤请参见创建表

  • 创建视图,具体操作请参见CREATE VIEW
    执行如下命令创建新视图myview,其中tpcds.web_returns为已经创建的、包含名为wr_refunded_cash整型字段的用户表。
    1
    2
    gaussdb=# CREATE OR REPLACE VIEW myview AS SELECT * FROM tpcds.web_returns WHERE trunc(wr_refunded_cash) > 10000;
    CREATE VIEW
    

    CREATE VIEW中的OR REPLACE子句是可选的。若使用此子句,当视图已存在时,数据库系统将自动替换原有视图定义。

  • 查询视图
    执行如下命令查询myview视图。
    1
    gaussdb=# SELECT * FROM myview;
    
  • 查看当前用户下的视图
    1
    gaussdb=# SELECT * FROM my_views;
    
  • 查看所有视图
    1
    gaussdb=# SELECT * FROM adm_views;
    
  • 查看某视图的具体信息
    执行如下命令查询myview视图的详细信息。
    1
    2
    3
    4
    5
    6
    7
    8
    gaussdb=# \d+ myview
                          View "PG_CATALOG.myview"
      Column  |         Type          | Modifiers | Storage  | Description
    ----------+-----------------------+-----------+----------+-------------
     USERNAME | CHARACTER VARYING(64) |           | extended |
    View definition:
     SELECT PG_AUTHID.ROLNAME::CHARACTER VARYING(64) AS USERNAME
       FROM PG_AUTHID;
    
  • 删除视图
    执行如下命令删除myview视图。
    1
    2
    gaussdb=# DROP VIEW myview;
    DROP VIEW