DB基本概念之 --- 视图

备注:首先要说明的是,普通视图和物化视图之间根本没有可比性,完全是不同性质的东西,但是名称相似,所以就放在一起介绍。

1 普通视图

普通视图仅仅就是一系列复杂SQL语句的封装。

其不存储任何数据的,只有定义,对视图的操作最终会转化为对表SQL语句的操作

三个特征:

1、简化设计,目的是清晰编码,并不是提高性能的,他的存在只会降低性能(如一个视图7个表关联,另一个视图8个表,程序员不知道,觉得很方便,把两个视图关联再做一个视图,那就惨了),他的存在主要是为了在设计上的方便性
2、安全,在授权给其他用户或者查看角度,多个表关联只允许查看,不允许修改,单表也可以同WITH READ ONLY来控制,当然有些项目基于视图做面向对象的开发,即在视图上去做INSTAND OF触发器,就我个人而言是不站同的,虽然开发上方便,但是未必是好事。
3、从不同的角度看不同的维度,视图可以划分维度和权限,并使多个维度的综合,也就是你要什么就可以从不同的角度看,而表是一个实体的而已,一般维度较少(如:人员表和身份表关联,从人员表可以查看人员的维度统计,从身份看,可以看不同种类的身份有那些人或者多少人),其次另一个如系统视图USER_TABLE、TAB、USER_OBJECTS这些视图,不同的用户下看到的肯定是不一样的,看的是自己的东西。

最简单的视图创建:

CREATE  OR  REPLACE  VIEW  dept_sum_vw   
(name,minsal,maxsal,avgsal)   
AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)   
FROM    emp e,dept d   
WHERE  e.deptno=d.deptno   
GROUP  BY  d.dname;

====================== 转自网络 ======================

 查询的别名

select t.ename from (select rownum,emp.* from emp) t ——内嵌视图

内嵌视图是不能存储在数据库中。

普通视图是可以存储在数据库中的,而且,再次查询视图,不需要重新编译

查询语句。因为,普通视图在数据库中存储视图的定义和视图的编译结果。

    ——普通视图本身不存数据,只存储查询,当查询视图时,会再次执行查询

    ——不占用数据库的空间(数据段)

Create or replace view View_name(alias1,…,aliasn)

As

Select_statement

[with check option [constraint c_name]]

[with read only]

——or replace:用于修改视图,或者在创建视图时,如果存在同名视图,则覆盖其定义

——with check option:用于定义视图的chech约束

——with read only:定义视图不可更新(只读,只能select)

 

create or replace view a
as
select * from emp where deptno=20
with check option
——此视图只能操作deptno=20的数据
insert into a(empno,ename,deptno)
values(1234,'aaa',10);——非法的


create or replace view a
as
select * from emp where deptno=20
with read only
——此视图只能select



2 物化视图:

物化视图是一种特殊的物理表,其将数据转换为表,实际存储着数据,这样查询数据就不用执行非常耗时的可能连接多张表的复杂SQL语句了。

物化视图目的是为了提高性能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值