Oracle视图(和Mysq一样l)
副标题[/!--empirenews.page--]
本章内容: Oracle视图介绍与创建、Oracle视图的查询与修改、Oracle的复杂视图 1. Oracle视图介绍与创建 (1)了解常见的数据库对象都有哪些 ? ? ? ??? (2)了解什么是视图以及为什么要使用视图 ??????? 概念:视图是一个虚拟表,视图当中的数据是来自于基表的 ??????? 为什么要用视图? ??????????? <1>安全原因:限制数据的访问(如:社会保险基金表,可以使用视图只显示姓名和地址,而不显示社会的保险号和工资) ??????????? <2>视图可使复杂的查询用于理解和使用 ? ??? (3)理解视图的分类 ??????? ? 简单视图、复杂视图、连接视图、只读视图 ??????? ? 简单视图:基于单个表建立、不包括函数表达式以及分组数据 复杂视图:包括函数表达式以及分组数据的一个视图,目的:为了简化查询操作 连接视图:为了简化连接查询 只读视图:只允许使用select语句,只能看 ??? (4)掌握视图的创建 ??????? 先登录system用户授予创建视图权限给scott用户 ? ? ? ? ? ??? ??创建简单视图? create view emp_view as select empno,ename,sal from emp; select * from emp_view ? ? ? 创建连接视图 create view demp_view as select d.deptno,d.dname,e.empno,e.ename,e.job from dept d inner join emp e on e.deptno=d.deptno and d.deptno=10; 接下来查询视图即可,不需要编写多表连接查询语句,很方便 select * from demp_view; ? ? 创建只读视图 create view emp_view3 as select empno,sal from emp with read only; select * from emp_view3 ? ? 因为是只读视图,试着修改一下 update emp_view3 set sal=sal+50; 报错:无法对只读视图做DML操作 ? ? 2.Oracle视图的查询与修改 目标:掌握视图上的DML操作、理解视图上定义的check约束的作用、掌握视图的修改与删除
create view empnew_view as select empno,sal from empnew; select * from empnew_view; //查询视图 insert into empnew_view(eid,salary) values(99,‘qi1qi‘,66) update emp set ename="qiqi1" where eid=88 delete from emp where eid=88 ? ??? (2)创建视图时定义check约束 ??? create view empnew_view2 as select * from empnew where deptno=20 with check option constraint ck_view; 这时候往视图中添加数据 insert into empnew_view2(empno,sal) values(22,‘qiqi‘,333); 会报错:ORA-01402: view WITH CHECK OPTION where-clause violation??? //视图WITH CHECK OPTION where句子违规 ??? ?这时候添加或者修改数据的时候应该满足创建视图中的约束条件才能添加 ??? ?在这里指定部门编号为20即可以添加 insert into empnew_view2(empno,sal,deptno) values(22,333,20) ; ?
修改视图:通过下面修改再查询,很明显之前的视图已经被修改 create or replace view empnew_view as select * from emp where job=‘SALESMAN‘; select * from empnew_view; ? (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |