用户视图切换为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面向对象编程
物化视图
存储数据,耗费数据库资源,查询重写
提高性能,查询频繁而更新较少的场景
用户视图切换为Linux视图,视图_ITPUB博客相关推荐
- linux宝塔搭建网站,宝塔Linux面板搭建网站入门教程五(宝塔Linux面板安装WordPress博客程序)...
本文于 2021-04-01 00:04 更新,本文內容具有時效性,如有失效,請在博客站內搜相關商家名稱,即可查看到關於此商家的最新優惠活動! 國外商家建議使用"谷歌瀏覽器"訪問, ...
- Linux手动部署MoguBlog 博客微服务 Springalibaba
Linux手动部署MoguBlog微服务 安装docker 使用官方安装脚本自动安装 安装命令如下: curl -fsSL https://get.docker.com | bash -s docke ...
- linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
网上找了很多文档都访问不了salt-api,搞了好半天,终于弄好了,写个笔记,方便以后查询 如果需要通过第三方来调用SaltStack时,使用SaltStack自带的Python API并不能很好的满 ...
- 在Linux系统搭建Hugo博客
简介 Hugo是由Go语言实现的静态网站生成器.简单.易用.高效.易扩展.快速部署. 该篇文章是在Linux/Ubuntu系统下安装搭建 Hugo 博客. 本博客参考了该视频:https://www. ...
- linux hexo搭建个人博客,gitee和hexo搭建个人博客
首先准备软件:git (提供命令git) notepad++(方便编辑) nodejs(hexo依赖) 7z(压缩包) 安装 nodejs.git.notepad++和7z的安装过程省略.主要要说的是 ...
- [整理]几个好的嵌入式linux学习网站和博客
QT博客 : http://blog.csdn.net/u011012932/article/category/1447841 shell 脚本 :http://c.biancheng.net/c ...
- 在Linux服务器部署Halo博客系统及配置HTTPS
Halo 是一款现代化的个人独立博客系统,给习惯写博客的同学多一个选择. Halo [ˈheɪloʊ],意为光环.当然,您也可以当成拼音读(哈喽). 一个优秀的开源博客发布应用,值得一试. 前提 具备 ...
- linux查看气质系统文件命令,气质_ITPUB博客
白天挺晴好的天气,到了暮夜,却又是漏声落檐的一场清雨.推离键盘,搁字离篇,起身来到阳台前,推开窗棂.寒意微冷的夜风迎面而来,不禁小些颤栗,还好清爽泽和的开阔气息,令神意倍感空旷清远. 虽说时值清夏,但 ...
- 高质量嵌入式Linux C编程第一次博客作业
1:linux 与 Unix的关系? 某些PC机的Unix和Linux在实现方面相类似.几乎所有的商业Unix版本都基本支持同样的软件.程序设计环境和网络特性.然而,Linux和Unix的商业版本依然 ...
最新文章
- 如何解决2012年7月1日增加闰秒后引起linux系统重启问题
- 第三周课程总结及实验报告(一)
- 如何诊断crs 安装时 root.sh 脚本执行错误
- 介绍两款Docker可视化工具
- linux下安装配置redis服务
- Asp组件中级入门与精通系列之五
- java命令行参数工具_Java方法中的参数太多,第8部分:工具
- 【插件发布】JAVA微服务框架,Jeecg-P3-Demo 1.0.0 插件开源发布
- android语音识别和合成第三方
- 编程之美2.17 数组循环移位
- Educational Codeforces Round 51 (Rated for Div. 2) The Shortest Statement
- 第九次作业(杨辉三角)
- linux多CPU进程负载均衡解析
- PDF阅读器使用技巧
- 由NTC电阻值 计算温度 C语言,NTC热敏电阻温度计算方法,Steinhart-Hart方程和B值法(转)...
- 分享一些做课题调查的方法
- 好听的敕勒川天苍苍野茫茫风吹草低见牛羊
- QT 利用QAxObject大数据读写excel文件
- java通过键盘输入数组赋值并交换数组元素最大值和最小值
- 软件工程 3:模块化设计
热门文章
- slab中记录空闲对象
- 【Python】any() all() 用法
- VC 6.0 : Cannot open include file: 'streambuf': No such file or directory !!
- matlab 流星雨,dijkstra算法及其matlab实现
- google authenticator python_Google Authenticator TOTP原理详解(以Python为例)
- 电脑cpu温度过高怎么办_解决电脑主板CPU温度过高,COC机箱提升电脑健康指数
- MeeGo、Ubuntu Touch、Sailfish、Tizen系统历史关系
- shell之提取头文件
- Android8.1展讯平台之audio_policy_configuration.xml(四十二)
- ALSA中amixer、aplay、arecord(三)