您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle_9i详解之视图
ORACLE_9I详解之视图目标通过本章学习,您将可以:描述视图创建和修改视图的定义,删除视图从视图中查询数据通过视图插入,修改和删除数据创建和使用临时视图使用“Top-N”分析常见的数据库对象对象描述表基本的数据存储集合,由行和列组成。视图从表中抽出的逻辑上相关的数据集合。序列提供有规律的数值。索引提高查询的效率同义词给对象起别名视图表EMPLOYEES:为什么使用视图控制数据访问简化查询数据独立性避免重复访问相同的数据简单视图和复杂视图特性简单视图复杂视图表的数量一个一个或多个函数没有有分组没有有DML操作可以有时可以创建视图在CREATEVIEW语句中嵌入子查询子查询可以是复杂的SELECT语句CREATE[ORREPLACE][FORCE|NOFORCE]VIEWview[(alias[,alias]...)]ASsubquery[WITHCHECKOPTION[CONSTRAINTconstraint]][WITHREADONLY[CONSTRAINTconstraint]];创建视图创建视图举例描述视图结构DESCRIBEempvu80CREATEVIEWempvu80ASSELECTemployee_id,last_name,salaryFROMemployeesWHEREdepartment_id=80;Viewcreated.创建视图创建视图时在子查询中给列定义别名在选择视图中的列时应使用别名CREATEVIEWsalvu50ASSELECTemployee_idID_NUMBER,last_nameNAME,salary*12ANN_SALARYFROMemployeesWHEREdepartment_id=50;Viewcreated.查询视图SELECT*FROMsalvu50;查询视图USER_VIEWSEMPVU80SELECTemployee_id,last_name,salaryFROMemployeesWHEREdepartment_id=80;SQL*PlusSELECT*FROMempvu80;EMPLOYEESOracleServer修改视图使用CREATEORREPLACEVIEW子句修改视图CREATEVIEW子句中各列的别名应和子查询中各列相对应CREATEORREPLACEVIEWempvu80(id_number,name,sal,department_id)ASSELECTemployee_id,first_name||''||last_name,salary,department_idFROMemployeesWHEREdepartment_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的规定可以在简单视图中执行DML操作当视图定义中包含以下元素之一时不能使用delete:组函数GROUPBY子句DISTINCT关键字ROWNUM伪列视图中使用DML的规定当视图定义中包含以下元素之一时不能使用update:组函数GROUPBY子句DISTINCT关键字ROWNUM伪列列的定义为表达式视图中使用DML的规定当视图定义中包含以下元素之一时不能使用insert:组函数GROUPBY子句DISTINCT关键字ROWNUM伪列列的定义为表达式表中非空的列在视图定义中未包括WITHCHECKOPTION子句使用WITHCHECKOPTION子句确保DML只能在特定的范围内执行任何违反WITHCHECKOPTION约束的请求都会失败CREATEORREPLACEVIEWempvu20ASSELECT*FROMemployeesWHEREdepartment_id=20WITHCHECKOPTIONCONSTRAINTempvu20_ck;Viewcreated.屏蔽DML操作可以使用WITHREADONLY选项屏蔽对视图的DML操作任何DML操作都会返回一个Oracleserver错误屏蔽DML操作CREATEORREPLACEVIEWempvu10(employee_number,employee_name,job_title)ASSELECTemployee_id,last_name,job_idFROMemployeesWHEREdepartment_id=10WITHREADONLY;Viewcreated.删除视图删除视图只是删除视图的定义,并不会删除基表的数据DROPVIEWempvu80;Viewdropped.DROPVIEWview;临时视图临时视图可以是嵌套在SQL语句中的子查询在FROM子句中的的子查询是临时视图临时视图不是数据库对象TOP-N分析Top-N分析查询一个列中最大或最小的n个值:销售量最高的十种产品是什么?销售量最差的十种产品是什么?最大和最小的值的集合是Top-N分析所关心的TOP-N分析查询最大的几个值的Top-N分析:SELECT[column_list],ROWNUMFROM(SELECT[column_list]FROMtableORDERBYTop-N_column)WHEREROWNUM=N;TOP-N分析查询工资最高的三名员工:SELECTROWNUMasRANK,last_name,salaryFROM(SELECTlast_name,salaryFROMemployeesORDERBYsalaryDESC)WHEREROWNUM=3;312123总结通过本章学习,您已经了解视图的优点和基本应用:控制数据访问简化查询数据独立性删除时不删除数据子查询是临时视图的一种Top-N分析
本文标题:Oracle_9i详解之视图
链接地址:https://www.777doc.com/doc-3871191 .html