欢迎来到天天文库
浏览记录
ID:8969946
大小:3.04 MB
页数:25页
时间:2018-04-13
《oralce中的其他对象》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Oralce中的其他对象:l视图:n概念:视图是从一个或几个实体表(或视图)导出的表,它与实体表不同,视图本身是一个不包含任何真实的数据的虚拟表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据任然存放在原来的实体表中,从这个意义上讲,视图就像一个窗口,通过它可以看到数据库中自己感兴趣的数据及其变化:u案例:1:创建一张基本工资大于2000的雇员信息的视图:SQL>createorreplaceviewv_emp2as3selectempno,ename,sal,hiredatefromt_emp4where5sal>2000;视图已创建。Createorre
2、place表示如果有这张视图则替换,没有则创建:2:就可通过视图来直接查询结果:视图就相当于给某个查询结果定义一个别名:SQL>select*fromv_emp;EMPNOENAMESALHIREDATE--------------------------------------------7566JONES297502-4月-817698BLAKE285001-5月-817782CLARK245009-6月-817788SCOTT300019-4月-877839KING500017-11月-817902FORD300003-12月-81已选择6行。n但是在Oracle
3、tte10gRa这个版本之后,默认情况下scott用户没有创建视图的权限:所以要进行如下操作:Connsys/change_no_installassysdba;Grantcreateviewtoc##scott;n现在只要查询视图就可以实现与被封装的sql语句同样的功能:n在Oracle中,针对视图也提供一个数据字典:user_views;n视图也相当于一张表:u案例:2:创建一张只包含20部门雇员信息的视图:SQL>createorreplaceviewv_emp2as3selectempno,ename,sal,deptnofromt_emp4where5dept
4、no=20;视图已创建。然后再进行查询:SQL>select*fromv_emp;EMPNOENAMESALDEPTNO----------------------------------------7369SMITH800207566JONES2975207788SCOTT3000207876ADAMS1100207902FORD300020n当然视图也可以进行增,删,改,查,但不推荐进行对视图数据的更改:n通过视图实现了查询的方便:创建视图的时候注意使用别名:createorreplaceviewv_empasselectd.deptno"部门编号",d.dname
5、"部门名称",d.loc"部门位置",count(e.ename)"总人数",avg(e.sal)"平均工资",max(e.sal)"最高工资",min(e.sal)"最低工资"fromt_deptd,t_empewheree.deptno(+)=d.deptnogroupbyd.deptno,d.dname,d.loc;进行查询:SQL>select*fromv_emp;部门编号部门名称部门位置总人数平均工资最高工资-------------------------------------------------------------------最低工资------
6、----20RESEARCHDALLAS52175300080040OPERATIONSBOSTON010ACCOUNTINGNEWYORK32916.6666750001300部门编号部门名称部门位置总人数平均工资最高工资-------------------------------------------------------------------最低工资----------30SALESCHICAGO61566.666672850950n还有要注意的是:u无法通过视图修改多个基表:u也无法更改经过合计后的数据:u只能更改基本数据:因此不推荐:uWithchec
7、koption字句:在创建视图的时候需要使用一些where字句做一些条件的的限制,但是默认情况下的视图创建完成之后,是可以通过视图去修改在where字句之中的字段内容的,而在此时就需要通过withcheckoption字句来保证视图的创建条件不被更新SQL>createorreplaceviewv_emp2as3select*fromt_empwheredeptno=204withcheckoptionconstraintv_emp_vk;SQL>updatev_empsetdeptno=40wheredeptno=20;updatev_
此文档下载收益归作者所有