资源描述:
《oracle内部培训 (10)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、视图目标通过本章学习,您将可以:描述视图创建和修改视图的定义,删除视图从视图中查询数据通过视图插入,修改和删除数据创建和使用临时视图使用“Top-N”分析常见的数据库对象对象描述表基本的数据存储集合,由行和列组成。视图从表中抽出的逻辑上相关的数据集合。序列提供有规律的数值。索引提高查询的效率同义词给对象起别名视图表EMPLOYEES:为什么使用视图控制数据访问简化查询数据独立性避免重复访问相同的数据简单视图和复杂视图特性简单视图复杂视图表的数量一个一个或多个函数没有有分组没有有DML操作可以有时可以创建视图在CREATEVIEW语句中嵌入子查
2、询子查询可以是复杂的SELECT语句CREATE[ORREPLACE][FORCE
3、NOFORCE]VIEWview[(alias[,alias]...)]ASsubquery[WITHCHECKOPTION[CONSTRAINTconstraint]][WITHREADONLY[CONSTRAINTconstraint]];创建视图创建视图举例描述视图结构DESCRIBEempvu80CREATEVIEWempvu80ASSELECTemployee_id,last_name,salaryFROMemployeesWHEREdepartme
4、nt_id=80;Viewcreated.创建视图创建视图时在子查询中给列定义别名在选择视图中的列时应使用别名CREATEVIEWsalvu50ASSELECTemployee_idID_NUMBER,last_nameNAME,salary*12ANN_SALARYFROMemployeesWHEREdepartment_id=50;Viewcreated.查询视图SELECT*FROMsalvu50;查询视图USER_VIEWSEMPVU80SELECTemployee_id,last_name,salaryFROMemployeesWH
5、EREdepartment_id=80;SQL*PlusSELECT*FROMempvu80;EMPLOYEESOracleServer修改视图使用CREATEORREPLACEVIEW子句修改视图CREATEVIEW子句中各列的别名应和子查询中各列相对应CREATEORREPLACEVIEWempvu80(id_number,name,sal,department_id)ASSELECTemployee_id,first_name
6、
7、''
8、
9、last_name,salary,department_idFROMemployeesWHEREde
10、partment_id=80;Viewcreated.创建复杂视图复杂视图举例CREATEVIEWdept_sum_vu(name,minsal,maxsal,avgsal)ASSELECTd.department_name,MIN(e.salary),MAX(e.salary),AVG(e.salary)FROMemployeese,departmentsdWHEREe.department_id=d.department_idGROUPBYd.department_name;Viewcreated.视图中使用DML的规定可以在简单视图中执
11、行DML操作当视图定义中包含以下元素之一时不能使用delete:组函数GROUPBY子句DISTINCT关键字ROWNUM伪列视图中使用DML的规定当视图定义中包含以下元素之一时不能使用update:组函数GROUPBY子句DISTINCT关键字ROWNUM伪列列的定义为表达式视图中使用DML的规定当视图定义中包含以下元素之一时不能使用insert:组函数GROUPBY子句DISTINCT关键字ROWNUM伪列列的定义为表达式表中非空的列在视图定义中未包括使用WITHCHECKOPTION子句确保DML只能在特定的范围内执行任何违反WITHC
12、HECKOPTION约束的请求都会失败CREATEORREPLACEVIEWempvu20ASSELECT*FROMemployeesWHEREdepartment_id=20WITHCHECKOPTIONCONSTRAINTempvu20_ck;Viewcreated.WITHCHECKOPTION子句屏蔽DML操作可以使用WITHREADONLY选项屏蔽对视图的DML操作任何DML操作都会返回一个Oracleserver错误屏蔽DML操作CREATEORREPLACEVIEWempvu10(employee_number,employee
13、_name,job_title)ASSELECTemployee_id,last_name,job_idFROMemployeesWHEREdepartment_i