Oracle(二)之视图的使用

##概述

##什么是视图

视图可以理解为一张虚拟表,它是由固定的sql查询语句操作真实表得到的一个临时表。视图中的数据就是查询sql语句的结果。得到视图之后,我们可以使用sql操作视图,但只能是查询操作。查询视图与查询真实表的sql语法完全相同。

##视图的作用

首先看下面一个sql语句:

select count(1) from (select age from person group by age) temp

在上面这个sql中首先使用select age from person group by age得到一个临时表,然后使用select count(1) from temp操作临时表。

此时我们就可以根据select age from person group by age创建一个视图,起名为temp,然后使用select count(1) from temp查询数量,得到的结果与select count(1) from (select age from person group by age) temp完全相同。

视图比临时sql的优点:

  1. sql是写在项目中,视图是写在数据库中,当视图有变化时直接操作数据库即可,避免重启项目。
  2. 视图更直观,在调试时我们可以查看视图中的数据是不是我们想要的数据。

为什么使用视图而不创建真是表:

  1. 视图是临时表,会随着真实表的数据变化而自动变化。如果创建一个真实表还需要维护该表的数据。
  2. 视图不存储数据,之存储sql语句,每次操作视图都是临时执行sql后得到的数据。减少存储空间。

##视图的分类

视图分为view和materialized view,view称为视图,materialized view称为物化视图。

视图与物化视图的区别:

  1. 视图不保存数据,每次操作视图都临时查询数据。
  2. 物化视图保存数据,操作物化视图不执行视图的生成sql。物化视图可以设置自己的数据刷新机制。

视图的优缺点:不保存数据,不占用空间。但每次都执行生成视图的sql语句,故效率低。

物化视图的优缺点:保存数据,故占用空间。操作物化视图不执行视图的生成sql,故效率高。但需要设置数据刷新机制。

视图和物化视图的选择:在选择时首先考虑的是数据是否需要及时刷新,如果需要及时刷新则选择视图,如果不需要及时刷新则选择物化视图。

##视图的使用

##视图的创建

创建视图非常简单,语法如下:

CREATE VIEW 视图名称 AS sql语句;

示例如下:

CREATE VIEW USER_INFO AS SELECT USERNAME,MOBILEPHONE FROM HY_SIMPLE_USER WHERE TICKET_TYPE = 1;

##查看数据库中的所有视图

查看所有视图的sql如下:

select * from user_views;

结果如下:

##查询视图中的数据

SELECT * from USER_INFO where USERNAME = 'xiagz';

结果如下:

说明:视图中的字段名为生成sql语句时的字段名。

##使用NavicatePreminu操作视图

使用NavicatePreminu操作视图非常方便。如下:

说明:图中的“Views”即表示视图,右击“Views”,然后选择“New View”即可创建视图。

 

创建一个视图之后,还提供了很多操作功能,如下:

##物化视图的使用

##物化视图的创建

创建物化视图非常简单,语法如下:

CREATE MATERIALIZED VIEW 视图名称 AS sql语句;

示例如下:

CREATE MATERIALIZED VIEW USER_INFO AS SELECT USERNAME,MOBILEPHONE FROM HY_SIMPLE_USER WHERE TICKET_TYPE = 1;

 

##查看数据库中的所有视图

select * from user_mviews;

 

##使用NavicatePreminu操作物化视图

使用NavicatePreminu操作视图非常方便。新建物化视图如下:

此时会打开一个新的页面,可以设置sql语句,设置刷新机制。

 

 

 

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值