更新时间:2026-02-06 GMT+08:00
分享

管理视图

图1 创建和管理视图

背景信息

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

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

管理视图

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

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

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

  • 查询视图
    执行如下命令查询myview视图。
    1
    2
    3
    4
    gaussdb=# SELECT * FROM myview;
     c1 
    ----
    (0 rows)
    
  • 查看当前用户下的视图
    1
    gaussdb=# SELECT * FROM my_views;
    
  • 查看所有视图
    1
    gaussdb=# SELECT * FROM adm_views;
    
  • 查看某视图的具体信息
    执行如下命令查询myview视图的详细信息。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    gaussdb=# \d+ myview
                     View "public.myview"
     Column |  Type   | Modifiers | Storage | Description 
    --------+---------+-----------+---------+-------------
     c1     | integer |           | plain   | 
    View definition:
     SELECT  *
       FROM mytable
      WHERE trunc(mytable.c1::double precision) > 1000::double precision;
    
  • 删除视图
    执行如下命令删除myview视图。
    1
    2
    gaussdb=# DROP VIEW myview;
    DROP VIEW
    

相关文档