视图

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

一. 关系视图

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面向对象编程

物化视图

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

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

用户视图切换为Linux视图,视图_ITPUB博客相关推荐

  1. linux宝塔搭建网站,宝塔Linux面板搭建网站入门教程五(宝塔Linux面板安装WordPress博客程序)...

    本文于 2021-04-01 00:04 更新,本文內容具有時效性,如有失效,請在博客站內搜相關商家名稱,即可查看到關於此商家的最新優惠活動! 國外商家建議使用"谷歌瀏覽器"訪問, ...

  2. Linux手动部署MoguBlog 博客微服务 Springalibaba

    Linux手动部署MoguBlog微服务 安装docker 使用官方安装脚本自动安装 安装命令如下: curl -fsSL https://get.docker.com | bash -s docke ...

  3. linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    网上找了很多文档都访问不了salt-api,搞了好半天,终于弄好了,写个笔记,方便以后查询 如果需要通过第三方来调用SaltStack时,使用SaltStack自带的Python API并不能很好的满 ...

  4. 在Linux系统搭建Hugo博客

    简介 Hugo是由Go语言实现的静态网站生成器.简单.易用.高效.易扩展.快速部署. 该篇文章是在Linux/Ubuntu系统下安装搭建 Hugo 博客. 本博客参考了该视频:https://www. ...

  5. linux hexo搭建个人博客,gitee和hexo搭建个人博客

    首先准备软件:git (提供命令git) notepad++(方便编辑) nodejs(hexo依赖) 7z(压缩包) 安装 nodejs.git.notepad++和7z的安装过程省略.主要要说的是 ...

  6. [整理]几个好的嵌入式linux学习网站和博客

    QT博客 : http://blog.csdn.net/u011012932/article/category/1447841 shell 脚本   :http://c.biancheng.net/c ...

  7. 在Linux服务器部署Halo博客系统及配置HTTPS

    Halo 是一款现代化的个人独立博客系统,给习惯写博客的同学多一个选择. Halo [ˈheɪloʊ],意为光环.当然,您也可以当成拼音读(哈喽). 一个优秀的开源博客发布应用,值得一试. 前提 具备 ...

  8. linux查看气质系统文件命令,气质_ITPUB博客

    白天挺晴好的天气,到了暮夜,却又是漏声落檐的一场清雨.推离键盘,搁字离篇,起身来到阳台前,推开窗棂.寒意微冷的夜风迎面而来,不禁小些颤栗,还好清爽泽和的开阔气息,令神意倍感空旷清远. 虽说时值清夏,但 ...

  9. 高质量嵌入式Linux C编程第一次博客作业

    1:linux 与 Unix的关系? 某些PC机的Unix和Linux在实现方面相类似.几乎所有的商业Unix版本都基本支持同样的软件.程序设计环境和网络特性.然而,Linux和Unix的商业版本依然 ...

最新文章

  1. 如何解决2012年7月1日增加闰秒后引起linux系统重启问题
  2. 第三周课程总结及实验报告(一)
  3. 如何诊断crs 安装时 root.sh 脚本执行错误
  4. 介绍两款Docker可视化工具
  5. linux下安装配置redis服务
  6. Asp组件中级入门与精通系列之五
  7. java命令行参数工具_Java方法中的参数太多,第8部分:工具
  8. 【插件发布】JAVA微服务框架,Jeecg-P3-Demo 1.0.0 插件开源发布
  9. android语音识别和合成第三方
  10. 编程之美2.17 数组循环移位
  11. Educational Codeforces Round 51 (Rated for Div. 2) The Shortest Statement
  12. 第九次作业(杨辉三角)
  13. linux多CPU进程负载均衡解析
  14. PDF阅读器使用技巧
  15. 由NTC电阻值 计算温度 C语言,NTC热敏电阻温度计算方法,Steinhart-Hart方程和B值法(转)...
  16. 分享一些做课题调查的方法
  17. 好听的敕勒川天苍苍野茫茫风吹草低见牛羊
  18. QT 利用QAxObject大数据读写excel文件
  19. java通过键盘输入数组赋值并交换数组元素最大值和最小值
  20. 软件工程 3:模块化设计

热门文章

  1. slab中记录空闲对象
  2. 【Python】any() all() 用法
  3. VC 6.0 : Cannot open include file: 'streambuf': No such file or directory !!
  4. matlab 流星雨,dijkstra算法及其matlab实现
  5. google authenticator python_Google Authenticator TOTP原理详解(以Python为例)
  6. 电脑cpu温度过高怎么办_解决电脑主板CPU温度过高,COC机箱提升电脑健康指数
  7. MeeGo、Ubuntu Touch、Sailfish、Tizen系统历史关系
  8. shell之提取头文件
  9. Android8.1展讯平台之audio_policy_configuration.xml(四十二)
  10. ALSA中amixer、aplay、arecord(三)