【云小课】【第47课】openGauss如何创建和管理视图

数据库的小云妹 发表于 2022/05/05 10:39:40 2022/05/05
【摘要】 什么是视图当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣...

云小课必用.png

什么是视图

当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。

视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。

构造测试数据

步骤 1 执行如下语句,创建测试表。

CREATE TABLE infotest (  id int,  name varchar(30) ,  price float ,  PRIMARY KEY (id)) ;

步骤 2 执行如下语句,在表中插入数据。

insert into infotest values (1001,'牙刷',10.5),(1002,'毛巾',21.5),(1003,'茶几',999.9),(1004,'电视',3199),(1005,'冰箱',2999),(1006,'1 手机',1999),(1007,'2 手机',7699),(1008,'.3 手机',699.9),(1009,'T恤',21.5),(1010,'牛仔裤',99);

创建视图

执行如下语句创建新视图MyView,其中infotest构造测试数据中创建的表。

CREATE OR REPLACE VIEW MyView AS SELECT * FROM infotest WHERE price < 1000;

CREATE VIEW

1.png

CREATE VIEW中的OR REPLACE可有可无,当存在OR REPLACE时,表示若以前存在该视图就进行替换。

关于CREATE VIEW的更多用法请参考创建视图


查询视图

执行如下语句查询MyView视图。

SELECT * FROM MyView;

  id  |   name    | price 
------+-----------+------- 
 1001 | 牙刷    |  10.5 
 1002 | 毛巾    |  21.5 
 1003 | 茶几    | 999.9 
 1008 | .3 手机 | 699.9 
 1009 | T恤      |  21.5 
 1010 | 牛仔裤 |    99 
(6 rows)

查看某视图的具体信息

执行如下语句查询MyView视图的详细信息。

\d+ MyView

                         View "root.myview" 
 Column |         Type          | Modifiers | Storage  | Description 
--------+-----------------------+-----------+----------+------------- 
 id     | integer               |           | plain    | 
 name   | character varying(30) |           | extended | 
 price  | double precision      |           | plain    | 
View definition: 
 SELECT  * 
   FROM infotest 
  WHERE infotest.price < 1000::double precision;

更新数据

步骤 1 执行如下语句更新数据。

UPDATE infotest SET name = '手机' where id = 1008;

步骤 2 更新数据后,通过视图查询更新后的信息。

SELECT * FROM MyView;

  id  |   name    | price 
------+-----------+------- 
 1001 | 牙刷    |  10.5 
 1002 | 毛巾    |  21.5 
 1003 | 茶几    | 999.9 
 1009 | T恤      |  21.5 
 1010 | 牛仔裤 |    99 
 1008 | 手机    | 699.9 
(6 rows) 

更改视图名称

步骤 1 执行如下语句将视图改名。

ALTER VIEW  MyView RENAME TO YourView;

ALTER VIEW

更多用法请参考更改视图

步骤 2 执行如下命令,查看改名效果。

\d+ YourView

                        View "root.yourview"
 Column |         Type          | Modifiers | Storage  | Description
--------+-----------------------+-----------+----------+-------------
 id     | integer               |           | plain    |
 name   | character varying(30) |           | extended |
 price  | double precision      |           | plain    |
View definition:
 SELECT  *
   FROM infotest
  WHERE infotest.price < 1000::double precision;

删除视图

执行如下命令删除MyView视图。

drop view YourView;

DROP VIEW
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。