



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
问题:什么是视图?回答:视图也是一种数据库对象,英文叫做“view”。视图的本义就是与客户交互的窗口。简单理解有点象一个容器,窗口中只能存放一条查询语句。当“select * from 视图名“,其实执行的是容器中的查询语句。所以查询视图也可以得到数据,不过这些数据都是经过查询语句“加工”以后的数据,可能与原表的记录完全不同。显然:通过视图所看到的数据,就象是看到化过妆以后的女人。两者可能相差很大。问题:使用视图有什么好处?回答:1、数据访问控制。注意视图也是一个数据库对象。如果限制用户只能通过视图访问数据,那么就可能限制用户访问指定的数据,而不是数据库中的原始数据。2、简单复杂SQL的调用。有些一条SQL可能有好多行,通常都是一些报表。直接在JAVA或C程序调用并不方便,此时就可以创建一个视图,然后就用一句简单的“select * from 视图名”就可以了。3、实现相同查询语句的复用。下面讲一个需要统计数据出口的案例。假设大多数的业务都只针对本公司没有离职的员工,每次查询员工时都需要加上条件“where 离职状态=0”,不方便,也容易因为忘记加上条件而导致出错。所以就可以建立一个视图,这些业务每次查询要处理的员工时,都从视图中查询。当需求改变时,如需要根据出生日期显示员工年龄,也只需要改动视图一处。问题:如何创建、使用、删除视图?回答:创建视图: create or replace view 视图名 as select语句。“create or replace”表示的意思是同名的视图没有则创建,有则替换。使用视图:与表使用是完全一样的,所以视图也被当成一作“虚表”。删除视图:drop view 视图名。问题:创建视图时,提示“权限不够”,怎么办?解决:这是因为scott没有创建视图的权限,解决方法见这里。问题:删除视图以后,原来表的数据删除了没有?回答:没有,视图中的查询语句并没有改变。相反地,如果原表中的数据发生改变,查询视图得到的数据也马上会更新。问题:视图中是否保存了所查询的数据?回答:没有。视图中只是保存了一条SQL语句,通过视图所得到的数据,其实也就是查询语句所返回的数据。了解:Oracle中有一种物化视图,可以将SQL所查询的数据保存起来。缺点是对会降低数据库增删改的效率,因为在原表数据发生变化时,数据库必须同时更新物化视图中的数据。问题:通过视图是否可以加快查询速度?回答:不能。当数据量比较大,可以明显感觉到通过视图查询的效率比直接执行SQL要低得多。要提高查询的效率,最简单的方法就是创建合理的索引。问题:Oracle中可以通过视图可以更新数据吗?回答:不一定。要取决于视图中的sql语句。示例一:可更新视图。create or replace view my_emp_viewasselect empno,ename,sal from emp;-查询视图select * from my_emp_view;-更新视图update my_emp_view set sal=sal+100 where empno=7900;可以执行。示例二:不可更新视图。create or replace view my_emp_viewasselect deptno,count(*) as 人数 from empgroup by deptno;-查询视图select * from my_emp_view;-更新视图update my_emp_view set 人数=人数+1where deptno=10;报错:ORA-01732: 此视图的数据操纵操作非法逻辑上也说不通。上面的数据是数据库计算出来的,也不可能被更新。示例三:部分可更新视图。create or replace view my_emp_viewasselect d.deptno,d.dname,e.ename,e.empnofrom dept d,emp ewhere d.deptno=e.deptno-查询视图select * from my_emp_view;-更新视图update my_emp_view set ename=张三 where empno=7900;可以执行。update my_emp_view set dname=市场部 where empno=7900;不可以执行。因为此时dname是通过表连接动态计算出来的。分析:视图能否更新,取决所更新的行是否能否实际的数据表中的行一一对应,如果能对应,则可以更新。emp表中的每一行数据与my_emp_view视图中的每一行能够一一对应,但是dept表中的每一行数据却对应my_emp_view视图的多行数据,所以在my_emp_view视图中是不能更新部门信息的,但是能够更新员工数据。问题:如果有两个人的姓名都叫“MIKE”,能不能更新呢?回答:肯定可以,因为是根据empno进行更新的。问题:如何才能通过视图更新数据(以my_emp_view为例)?回答:在这个视图上建立替代触发器(在学习了触发器以后才能看懂下面的内容)。代码:createor replace trigger tr_emp_viewinstead of updateon my_emp_viewfor each rowdeclarebeginupdate emp set ename = :new.enamewhere empno = :new.empno;update dept set dname = :new.dnamewhere deptno = :new.deptno;end;测试:-更新视图update my_emp_view set ename=张三,dname=市场部where empno=7900;可以执行,本质是上由触发器同时对emp和dept表进行了修改。-查询视图,发现原来“sale”全部变成了“市场部”。select * from my_emp_view;创建视图权限不足(解决)2010-11-22 16:57问题:使用scott登录Oracle以后,创建视图,提示“权限不够”,怎么解决?回答:这是因为scott这个帐户目前没有创建视图的权限。解决方法为:首先使用system帐户进行登录,其中“tigertiger”为安装Oracle时所指定的密码(可修改):sqlplus system/tigertiger然后执行:grant create any
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育心理学在数学创新思维培养中的应用
- 肇庆市森林消防大队队员招聘笔试真题2024
- 陕西有色金属控股集团有限责任公司招聘笔试真题2024
- 2025年乳腺癌患者术后护理查房模板
- 2025年公务员制度测试题及答案
- 2025年公共营养师职业资格考试试卷及答案
- 村医高血压知识培训试题(附参考答案)
- 融资租赁咨询服务费协议
- 2025年高压化成箔项目发展计划
- 供热培训基础知识课件
- 四年级数学上册《大数的认识》单元测试卷
- DB23∕1270-2019 黑龙江省居住建筑节能设计标准
- 浅谈地下室底板无梁楼盖设计
- ISO14001内部审核检查表
- 立柱桩施工汇总
- 双块式无砟轨道施工工艺及质量控制
- 管理会计知识点整理
- 导管相关血流感染的治疗
- 工程进度款支付申请书
- 我国常见的草坪草
- 后腹腔镜下肾囊肿去顶减压术ppt课件
评论
0/150
提交评论