ORACLE数据库开发基础第四章视图.docx
文本预览下载声明
第四章视图、同义词和序列 视图、同义词和序列是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;
显示全部