志在指尖
用双手敲打未来

oracle视图(oracle建立视图语句)

oracle视图

一.视图的界说
视图(view),也称虚表,不占用物理空间,这个也是相对概念,由于视图本身的界说句子还是要存储在数据字典里的。视图只要逻辑界说。每次运用的时分,只是重新履行SQL。
视图是从一个或多个实践表中获得的,这些表的数据存放在数据库中。那些用于发生视图的表叫做该视图的基表。一个视图也能够从另一个视图中发生。
视图的界说存在数据库中,与此界说相关的数据并没有再存一份于数据库中。经过视图看到的数据存放在基表中。
视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当经过视图修正数据时,实践上是在改变基表中的数据;相反地,基表数据的改变也会主动反映在由基表发生的视图中。由于逻辑上的原因,有些Oracle视图能够修正对应的基表,有些则不能(仅仅能查询)。
还有一种视图:物化视图(MATERIALIZEDVIEW),也称实体化视图,快照(8i曾经的说法),它是含有数据的,占用存储空间。
tips:查询视图没有什么约束,插入/更新/删去视图的操作会受到必定的约束;一切针对视图的操作都会影响到视图的基表;为了避免用户经过视图间接修正基表的数据,能够将视图创立为只读视图(带上withreadonly选项)
二.视图的作用
1)供给各种数据表现形式,能够运用各种不同的方式将基表的数据展现在用户面前,以便符合用户的运用习气(首要手法:运用别名);
2)躲藏数据的逻辑复杂性并简化查询句子,多表查询句子一般是比较复杂的,并且用户需求了解表之间的关系,不然容易写错;假如根据这样的查询句子创立一个视图,用户就能够直接对这个视图进行”简略查询”而获得成果.这样就躲藏了数据的复杂性并简化了查询句子.这也是oracle供给各种”数据字典视图”的原因之一,all_constraints便是一个含有2个子查询并衔接了9个表的视图(在catalog.sql中界说);
3)履行某些有必要运用视图的查询.某些查询有必要凭借视图的协助才干完成.比方,有些查询需求衔接一个分组计算后的表和另一表,这时就能够先根据分组计算的成果创立一个视图,然后在查询中衔接这个视图和另一个表就能够了;
4)供给某些安全性保证.视图供给了一种能够操控的方式,即能够让不同的用户看见不同的列,而不允许访问那些灵敏的列,这样就能够保证灵敏数据不被用户看见;
5)简化用户权限的办理.能够将视图的权限颁发用户,而不必将基表中某些列的权限颁发用户,这样就简化了用户权限的界说。
三创立视图
1权限:要在当前方案中创立视图,用户有必要具有createview系统权限;要在其他方案中创立视图,用户有必要具有createanyview系统权限.视图的功能取决于视图拥有者的权限.
2语法:create[orreplace][force]view[schema.]view_name
[(column1,column2,…)]
as
select…
[withcheckoption][constraintconstraint_name]
[withreadonly];
tips:
1orreplace:假如存在同名的视图,则运用新视图”代替”已有的视图
2force:”强制”创立视图,不考虑基表是否存在,也不考虑是否具有运用基表的权限
3column1,column2,…:视图的列名,列名的个数有必要与select查询中列的个数相同;假如select查询包括函数或表达式,则有必要为其界说列名.此刻,既能够用column1,column2指定列名,也能够在select查询中指定列名.
4withcheckoption:指定对视图履行的dml操作有必要满意“视图子查询”的条件即,对经过视图进行的增修改操作进行”查看”,要求增修改操作的数据,有必要是select查询所能查询到的数据,不然不允许操作并返回过错提示.默认情况下,在增修改之前”并不会查看”这些行是否能被select查询检索到.
5withreadonly:创立的视图只能用于查询数据,而不能用于更改数据.oracle

oracle建立视图语句

视图:是根据一个表或多个表或视图的逻辑表,本身不包括数据,经过它能够对表里面的数据进行查询和修正。视图根据的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和近义词。
视图是存储在数据字典里的一条select语句。经过创立视图能够提取数据的逻辑上的集合或组合。
视图的优点:
1.对数据库的拜访,由于视图能够有选择性的选取数据库里的一部分。
2.用户经过简略的查询能够从杂乱查询中得到结果。
3.维护数据的独立性,企图可从多个表检索数据。
4.对于相同的数据可发生不同的视图。
视图分为简略视图和杂乱视图:
1、简略视图只从单表里获取数据,杂乱视图从多表;
2、简略视图不包括函数和数据组,杂乱视图包括;
3、简略视图能够实现DML操作,杂乱视图不能够。
语法结构:创立视图
CREATE[ORREPLACE][FORCE|NOFORCE]VIEWview_name
[(alias[,alias]…)]
ASsubquery
[WITHCHECKOPTION[CONSTRAINTconstraint]]
[WITHREADONLY]
语法解析:
ORREPLACE:若所创立的企图已经存在,则替换旧视图;
FORCE:不论基表是否存在ORACLE都会主动创立该视图(即便基表不存在,也能够创立该视图,但是该视图不能正常运用,当基表创立成功后,视图才能正常运用);
NOFORCE:假如基表不存在,无法创立视图,该项是默许选项(只要基表都存在ORACLE才会创立该视图)。
alias:为视图发生的列界说的别号;
subquery:一条完好的SELECT语句,能够在该语句中界说别号;
WITHCHECKOPTION:刺进或修正的数据行必须满足视图界说的约束;
WITHREADONLY:默许能够经过视图对基表履行增修改操作,但是有很多在基表上的约束(比方:基表中某列不能为空,但是该列没有出现在视图中,则不能经过视图履行insert操作),WITHREADONLY阐明视图是只读视图,不能经过该视图进行增修改操作。现实开发中,基本上不经过视图对表中的数据进行增修改操作。

未经允许不得转载:IT技术网站 » oracle视图(oracle建立视图语句)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载