11.oracle视图

--视图
定义:视图是将sql查询语句的结果动态保存到数据库中的一张虚拟表
权限要求: GRANT CREATE VIEW TO USER_NAME;

管理员身份才能授权;
      GRANT CREATE VIEW TO SCOTT;

--语法:
      CREATE [OR REPLACE] VIEW V_NAME[(别名1,别名2,..)] as 
SQL语句
      [WITH CHECK OPEN]--检查,可读写视图
      [WITH READ ONLY]; --只读

--详细语法:
      CREATE [OR REPLACE] [FORCE] VIEW '视图名'
      AS SQL语句
      [WITH [CASCADED|LOCAL] CHECK OPTION  
      [WITH READ ONLY]-- 只读。
         参数	                           说明
      OR REPLACE	        若所创建的试图已经存在,Oracle 自动重建该视图
      FORCE	              不管基表是否存在,Oracle 都会自动创建该视图
      SQL语句             一条完整的 SELECT 语句,可以在该语句中定义别名
      WITH CHECK OPTION	  数据表 插入或修改 的数据行,必须满足视图定义的约束
      WITH READ ONLY	    该视图上不能进行任何 DML 操作
      FORCE               有的时候,创建视图时的表可能并不存在,但是以后可能会存在。
                          如果此时需要创建这样的视图,需要添加 FORCE 选项。

--基表:视图的来源表
注意:
/*
1.视图是基于表建立起来的,查询语句不包含函数和分组。      
2.可以通过通过对视图的怎删改来更改基表数据
3.视图的结构和数据,是对数据表进行查询的结果。
4.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合。
它存储了要执行检索的 查询语句的定义,以便在引用该视图时使用
5.查询该视图。就像使用表一样,去使用视图就可以了
*/
使用视图的优点:
/*简化数据操作:
视图可以简化用户处理数据的方式。
着重于特定数据:
不必要的数据 或 敏感数据,可以不出现在视图中。
视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
提供向后兼容性:
视图使用户能够在表的架构更改时,为表创建向后兼容接口。
集中分散数据。
简化查询语句。
重用SQL语句。
保护数据安全。
共享所需数据。
更改数据格式*/

查看视图
    SHOW CREATE VIEW '视图名';

修改视图
    ALTER VIEW 视图名[(列明1,列明2..)]
    as SQL查询语句
    [WITH CHECK OPEN]
    [WITH READ ONLY]


删除视图
DROP VIEW [IF EXISTS] 视图名1,[视图名2]..[RESTRICT|CASCADE];
-- RESTRICT:限制。
-- CASCADE:级联。
简单删除
DROP VIEW 视图名; 
结论:
/*  
视图其实是一个虚拟的表,它的数据其实来自于表。
如果更改了视图的数据,表的数据也自然会变化。
更改了表的数据,视图也自然会变化。
一个视图所存储的并不是数据,而是一条 SQL 语句。*/

需求:修改视图为 只读视图。
    create or replace view 'view_owners' 
    as
    select * from 'T_OWNERS' where ownertypeid = 1 
    with read only;

有的时候,创建视图时的表可能并不存在,但是以后可能会存在。
如果此时需要创建这样的视图,需要添加 FORCE 选项。
    create or replace FORCE view 'view_TEMP' 
    as
    select * from 'T_TEMP';

复杂视图,就是视图的 SQL语句 中,有 聚合函数 或 多表关联查询。

需求:创建视图,查询显示 业主编号,业主名称,业主类型名称。
    create or replace view 'view_owners' 
    as
    select o.id '业主编号', o.name '业主名称', ot.name '业主类型' 
    from 'T_OWNERS' o, 'T_OWNERTYPE' ot 
    where o.ownertypeid = ot.id;
    
修改该视图。
-- 更新成功。
update view_owners set '业主名称' = '范小冰' where '业主编号' = 1;  
-- 更新失败。
update view_owners set '业主类型' ='普通居民' where '业主编号' = 1;

键保留表。
/*键保留表,是理解 连接视图修改限制 的一个基本概念。
该表的主键列 全部显示在视图中,并且它们的值 在视图中都是 唯一且非空的。
简单说,表的键值 在一个 连接视图 中也是 键值,那么就称这个表为 键保留表。*/

分组聚合统计查询
create view 'view_account_sum' 
as                              -- 必须 + `money_sum` 别名
select year, month, sum(money) money_sum from 'T_ACCOUNT' 
group by year, month
order by year, month;




物化视图
/*视图是一个 虚拟表(也可以认为是一条语句)。
视图 是指定的 查询语句,返回的 结果集。每次访问视图,都会导致这个 查询语句 被执行一次。
为了避免每次访问都执行这个查询,可以将这个查询结果集存储到一个 物化视图(也叫实体化视图)*/
物化视图 与 普通视图 相比的区别是。
/*物化视图 是建立的副本。
物化视图 类似于一张表,需要占用存储空间。
对一个 物化视图 查询的执行效率,与查询一个表是一样的。*/







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值