oracle视图

视图

视图是一个虚拟表
视图与表的区别:
1、表需要占用磁盘空间,视图不需要;
2、视图不需要添加索引;
3、使用视图可以简化复杂查询;
4、视图利于提高安全性;
在SQL语句之中,查询是非常麻烦的一件事情,有的查询语句非常长,在开发之中不方便进行程序的维护,那么在标准开发环境下,往往由数据库设计人员在数据库的业务中进行视图的定义以简化查询操作,所谓的视图就是包装了复杂查询的SQL语句对象

语法:

create or replace view 视图名 as 子查询 【with check option】 【with read only】;

注:or replace :创建视图,如果视图不存在则创建视图,如果存在,则使用新的查询替换之前的查询
with checkoption:不允许修改view 的创建条件
with read only:只读视图,创建的视图不允许修改 (强烈建议

删除视图:drop view 视图名;

(帮助理解)我们根据oracle实战里面的表,来编写一个查询如下:

select product.provider,sum(purcase.quantity) sum
    from product,purcase
    where product.prodectid=purcase .prodectid and product.category = '牙膏'
    group by product.provider
    having  sum(purcase.quantity) = (
							    select max(sum(purcase.quantity))
							    from product,purcase
							    where product.prodectid=purcase .prodectid and product.category = '牙膏'
							    group by product.provider)

但是我们发现这种查询太长了,维护起来很麻烦,但是我们如果创建视图的话

create or replace view_max as
select product.provider,sum(purcase.quantity) sum
    from product,purcase
    where product.prodectid=purcase .prodectid and product.category = '牙膏'
    group by product.provider
    having  sum(purcase.quantity) = (
							    select max(sum(purcase.quantity))
							    from product,purcase
							    where product.prodectid=purcase .prodectid and product.category = '牙膏'
							    group by product.provider)

这样的话我们只需要根据视图名查询

select * from view_max;

就可以了

视图创建完之后,我们可以在"user_views"中查看相应的视图信息

修改视图信息:如果这个视图是一个复杂查询,或者是视图保存的不是一个真实的数据(经过函数运算,分组,distinct,等等),这种情况下是不能修改的,
但是如果视图比较单一,就可以修改

但是我们强烈建议在创建视图的时候,使用 with read only 定义只读视图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值