文档详情

ORACLE数据库开发基础第四章视图.docx

发布:2018-03-18约1.86万字共29页下载文档
文本预览下载声明
第四章视图、同义词和序列  视图、同义词和序列是Oracle 的常用对象,在Oracle 系统安装完成后,就已经建立许多Oracle  系统所用的视图、同义词和序列。此外,在应用系统设计中,也经常需要创建视图、同义词  和序列来满足应用的需要。下面给出简要介绍。  4.1 视图  视图的一个主要目的就是简化用于查询所使用的语句,另外就是可以实现安全和保密的  目的。利用视图,我们可以在查询处理中完成复杂的操作。  4.1.1 使用视图来修改表中数据  可以用视图修改表中数据:  带有集合操作,如 intersect, union 和minus 的视图;  带有 group by,connect by,或 start with 子句的视图;  带有组合功能,如 avg , sum 或 max 功能的视图;  使用 distinct 功能的视图。  4.1.2 创建一个新视图  1 建立视图命令语法:  CREATE [OR REPLACE] [FORCE/NO FORCE] VIEW [schema.]view  [column_name1, column_name2] AS query  [WITH OBJECT OID | DEFAULT]  [WITH CHECK OPTION]  [CONSTRAINT constraint]  [WITH READ ONLY]  OR REPLACE 替换掉原来的视图(不需删除)  FORCE 强行创建一视图,无论视图的基表是否存在或拥有者是  否有权限,但作select、insert、update、delete 前条件  必须为真。  Schema 帐户、缺省为当前登录的帐户。  VIEW 视图名  121  Alias 视图的列名(唯一),缺省为列名  As subquery 查询表达式(不含order by, For update)  WITH CHECK OPTION 在视图上作insert,update 时必须是视图,  查询所得到的结果,有子查询时可能不正确。  Constraint 约束名称,缺省为sys_Cn. N 为整数(唯一)。  注:视图只是一个逻辑表,它自己不包含任何数据,目的在于:  通过限制存取基表中预定的一组行或列,提供安全的附加功能;  隐藏数据的复杂性,例如,经常对几个表的数据作某种运算后查询  时,可以使用视图使得操作仿佛是在单表上进行;  省去一些复杂的连接操作  ==============================================================================  注意:下面情况在视图中受到限制:  视图查询不能选取 Currval,nextval伪列;  只有加别名才能使用 rowid,rownum,level;  如果在子查询中使用 * 代替选择的表的所有列,则后来该表新加的列不会自动被加到视  图中,只有重新创建视图后该新增的列才能被加到视图中;  如 果 视 图 建 立 ( 即 查 询 ) 时 包 括 任 何 以 下 结 构 之 一 , 则 该 视 图 不 能 作  insert,update,delete(目前的新版可以,需作特别的说明限制):  连接运算;  集合运算符;  组函数;  GROUP BY,CONNECT BY,START WITH;  DISTINCT。  ==============================================================================  提示:不要在视图中再建视图,理论上虽可以对视图再建视图,但这样在查询时影响速度。  Create view emp_vi as select * from emp;  例1:为表emp 建立视图dept20,此视图可以显示部门20 的雇员和他们  的年薪。  Create view dept10 As select ename,deptno,job, sal*12 sal12  From emp where deptno=10;  例2:  Create view clerk (id_number, person, depart, position )  As select empno,ename,deptno,job  From emp where job=clerk  With check option constraint wco;  122  用户不能往clerk 视图中作insert(或update)非clerk的记录。  4.1.3 删除一个视图  1.用命令删除视图  语法:  DROP VIEW [SCHEMA.] view_name; 
显示全部
相似文档