Oracle公司内部数据库培训资料11_视图

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功