用户视图切换为Linux视图,视图_ITPUB博客

视图

视图是由已存在的数据,通过一定的运算规则,来获得新的数据集合.可以让用于更加灵活的自定义数据集合,以及为数据安全性提供了一种控制策略.

一. 关系视图

1. 创建关系视图

create or repacle view 视图名称 as 查询语句|关系运算;

2. 查看视图定义

select view_name,text from user_views where view_name=’视图名字’;

3. 更改视图

a) 查看视图各列的可更新情况

Select table_name,column_name,updatable,insertable,deletable

from user_updatable_columns

where table_name=’视图名字’;

b) 更改视图数据[update,insert,drop]

同表

4. 只读视图

create or repacle view 视图名称 as 查询语句

with read only

5. 创建视图约束[保证数据完整性,仅对insert/update有效]

create or repacle view 视图名称 as 查询语句

with check option

with check option实际是为视图创建了一个约束,该约束主要根据where子句条件判断,oracle将会判断修改[insert/update]后的数据是否违反了该约束,如果违反则抛出错误.

二. 对象视图

(一).对象简介

1.对象类型与对象

create or replace type as ovject(

attribute1 datatype1,

attribute2 datatype2,

member function functionl,

member procedure procedurel,

)

其中, Create or replace type 用于创建一个新的类型,as ovject代表新类型继承object,attribute用于定义对象类型所拥有的属性,datatype代表属性的具体类型,member function用于定义成员函数,member procedure用于定义成员过程.

eg. create or replace type employee as object(

emp_id number,

emp_name varchar2(20),

emp_job varchar2(20)

);

/

2.获得类的相关信息

select type_name,typecode,attributes from user_types;

select type_name,attr_name,attr_type_name,length from user_type_attrs;

3.根据类定义表的结构

eg. create table tmp_emp of employee;

4.把对象插入到数据表中

declare e employee;

begin

e :=employee(1,’王大’,’SALESMAN’)

insert into tmp_emp values (e);

end;

/

5.从数据到对象

declare e employee;

begin

select value(t) into e from tmp_emp t where emp_id=1;

e.emp_id:=e.emp_id +1;

insert into tmp_emp values(e);

end;

/

(二).对象视图

1.创建对象视图

create or replace view ov_emp of employee

with object oid(emp_id) as

select emp_id a_id,emp_name,emp_job from tmp_emp;

2.查看对象视图信息

select view_name,view_type from user_views where view_name='OV_EMP';

view_type代表了视图基于的对象类型.

3.查询对象视图

select * from ov_emp;

4.更新对象视图

insert into ov_emp values(3,'李二','WORKER');

以上数据会插入到视图ov_emp中以及基础表tmp_emp中.

通过对象视图,可以同时向基础表中插入数据,而此时的插入方式可以以对象实例方式实现.

三.物化视图

1.物化视图简介

物化视图的主要意义在于提高数据库性能.对比普通查询语句,利用物化视图可以大大提高执行效率,当数据表的数据更加庞大,查询语句更加复杂的时,物化视图所带来的性能上的提升将更加显著.

2.使用物化视图

(1) 创建及使用物化视图

create materialized view 物化视图名 as 视图定义

(2) 在数据字典中获得物化视图信息

select mview_name,query from user_mviews;

如果在视图user_objects中查询,会发现有与物化视图同名的数据表

select object_name,object_type,status from user_objects where .......;

在查询结果中将含有两条记录,一条标识了物化视图本身,而另一条则标识了物化视图的附属数据表.物化视图创建时,会将查询定义所获得的数据加载到附属数据表中,而当查询物化视图时,查询的对象实际是物化视图的附属数据表.

3.延时载入

create materialized view 视图名 build deffered as 视图定义;

4.数据刷新

(1) 手动刷新

exec dbms_mview.refresh('视图名');

(2) 当数据修改被提交时,自动同步数据.

alter materialized view 视图名 refresh on commit;

物化视图的数据同步将耗费大量的数据库资源,当数据频繁更新时,将给数据库带来极大的负载,所以自动同步仅仅适用于那些读取频繁,而更新较少的场景下.

对于更新频繁的场景,应当使用人工刷新的策略,即通过制定refresh on demand.

5.查询重写

(1) 定义

当进行查询时,oracle改写查询语句,搜寻其他数据源,以在保证结果的情况下提高执行效率,而这个新的数据源,往往是指物化视图.

(2) 物化视图的查询重写功能

启用:alter materialized view 视图名 enable query rewrite;

禁用:alter materialized view 视图名 disable query rewrite;

视图总结

视图特点

应用场景

关系视图

存储查询定义,可重用

封装查询,数据权限与安全控制

内嵌视图

不存储查询定义,无需维护,不可重用

临时或中间结果集,子查询

对象视图

可与对象进行相互映射,面向编程的好处

oracle面向对象编程

物化视图

存储数据,耗费数据库资源,查询重写

提高性能,查询频繁而更新较少的场景

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值