- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 视图、序列、同义词管理 8.1.1 创建普通视图 具有CREATE VIEW 权限就可以在自己的帐户下创建视图; 具有CREATE ANY VIEW 权限就可以在自己的帐户下或其他帐户下创建视图; 具有DROP VIEW 或 DROP ANY VIEW 就可以删除视图; 创建视图的语法 CREATE [FORCE|NOFORCE] VIEW view_name [(alias [, alias]…)] AS SQLQuery???????????????????? [WITH CHECK OPTION [CONSTRAINT constraint_name]]??????????????????????????????? WITH READ ONLY [CONSTRAINT constraint_name]]; 创建视图的语法 CONSTRAINT 约束 WITH CHECK OPTION :不允许 INSERT和UPDATE; WITH READ ONLY :不允许 INSERT、UPDATE和DELETE。 8.1.1 创建普通视图 Create view dept30 As select ename,deptno,job, sal*12 sal12 From emp where deptno=30; 创建连接视图 CREATE VIEW emp_dept AS SELECT emp.empno, emp.ename, emp.deptno,emp.sal,dept.dname, dept.loc FROM emp, dept WHERE emp.deptno = dept.deptno AND dept.loc IN (DALLAS, NEW YORK, BOSTON); 创建连接视图 对于连接视图来说,它的操作要遵循下面规则: ?1、一般规则 连接视图的任何INSERT、UPDATE、DELETE操作在同时刻只能修改其下属表. 2、UPDATE规则 连接视图的带有WITH CHECK OPTION 子句,则不能进行UPDATE. 创建连接视图 3、DELETE规则 连接视图存在一个保留关键字,则该连接视图可以进行删除;如果建立时带有WITH CHECK OPTION 子句,则连接视图不能进行DELETE。 4、INSERT规则:如果建立时带有WITH CHECK OPTION 子句,则连接视图不能进行INSERT。 创建连接视图 Create view clerk (id_number, person, depart, position ) As select empno,ename,deptno,job From emp where job=clerk With check option constraint wco; 用户不能往clerk视图中作insert(或update)非clerk的记录。 关于with check option 默认情况下,由于行通过视图进行添加或更新,当其不再符合定义视图的查询的条件时,它们即从视图范围中消失。 例如,可创建一个查询,从而定义一个视图以在表中检索所有员工薪水低于 ? $30,000 ? 的行。如果该员工的薪水涨到了 ? $32,000,则查询视图时该特定员工将不再出现,因其薪水不符合视图所设的标准。但是, 关于 WITH ? CHECK ? OPTION WITH ? CHECK ? OPTION ? 子句强制所有数据修改语句均根据视图执行,以符合定义视图的 ?where ? 语句中所设的条件。 如果使用该子句,修改行时需考虑到不让它在修改完后从视图中消失。任何可能导致行消失的修改都会被取消,并显示错误信息。 这个选项可以确保数据库中正在修改的数据的完整性。 关于 WITH ? CHECK ? OPTION CREATE?VIEW?EMP_VIEW2? ??(EMPNO,EMPNAME,DEPTNO,JOBTITLE,HIREDATE)? ??AS?SELECT?EMPNO,ENAME,DEPT,JOB,HIREDATE?FROM?EMP ????WHERE?DEPT=10? ??WITH?CHECK?OPTION; ?下列?SQL?语句可能会导致不能更新: ? SQLUPDATE?EMP_VIEW2?SET?DEPT=20?WHERE?DEPT=10; 已更新0行。 检查无效视图 select alter view || owner || . || object_name || compile ; from dba_obj
文档评论(0)