配色: 字号:
第10节-视图
2017-05-16 | 阅:  转:  |  分享 
  
视图(VIEW)常见的数据库对象对象描述表基本的数据存储集合,由行和列组成视图从表中抽出的逻辑上相关的数据集合序列提供有规律的数值索引提
高查询的效率同义词给对象起别名视图视图是一种虚表。视图建立在已有表的基础上,视图赖以建立的这些表称为基表。向视图提供数据内容
的语句为SELECT语句,可以将视图理解为存储起来的SELECT语句.视图向用户提供基表数据的另一种表现形式为什么使用
视图控制数据访问简化查询避免重复访问相同的数据简单视图和复杂视图特性简单视图复杂视图表的数量一个一个或多个函数没有有分组没有有D
ML操作可以有时可以创建视图(创建视图时在子查询中可以给列定义别名)显示视图结构:desc视图名将视图设置成只读视图:结尾使
用withreadonly创建简单视图CreateviewempviewAsSelectemployees_idid,
last_namename,salaryFromemployeesWheredepartment_id=80;创建复杂视图(
表中不存在的列,应给别名)例:CREATEVIEWempview1ASSELECTd.department_name,M
IN(e.salary)minsal,MAX(e.salary)maxsal,AVG(e.salary)avgsalF
ROMemployeese,departmentsdWHEREe.department_id=d.depa
rtment_idGROUPBYd.department_name;在CREATEVIEW语句中嵌入子查询cre
ateviewempviewasselectemployee_id,last_name,department_name
fromemployeese,departmentsdWheree.department_id=d.departmen
t_id三.修改视图(替换以前视图中的所有内容)使用CREATEORREPLACEVIEW子句修改视图createor
replaceviewempviewAsSelectemployees_id,last_name,Fromemploy
eesWheredepartment_id=80;四.删除视图删除视图只是删除视图的定义,并不会删除基表的数据DROPVIEW
empview;五.视图中使用DML的规定(在复杂视图中不可以使用增、删、改)可以在简单视图中执行DML操作当视图定义中包含
以下元素之一时不能使用delete、update、insert:组函数GROUPBY子句DISTINCT关键字ROWNUM
伪列屏蔽DML操作???可以使用WITHREADONLY选项屏蔽对视图的DML操作任何DML操作都会返回一个Or
acleserver错误CREATEORREPLACEVIEWempvu10(employee_number,em
ployee_name,job_title)ASSELECTemployee_id,last_name,job_idFR
OMemployeesWHEREdepartment_id=10WITHREADONLY六.Top-N
分析Top-N分析查询一个列中最大或最小的n个值:注意:对ROWNUM(伪列)只能使用<或<=,而用=,
>,>=都将不能返回任何数据。说明:rownum”伪列”---数据表本身并没有这样的列,是oracle数据库为每个数据表“加上
的”列,可以标识行号,默认情况下rownum按主索引来排序,若没有主索引则自然排序(从小到大)例:查询工资最高的10名员工Sele
ctrownum,employees_id,last_name,salaryFrom(Selectemployee_id,l
ast_name,salaryFromemployeesOrderbysalarydesc)Whererownum
<=10;如果要查询工资第40-50列(小于等于50和大于40)的怎么操作?温馨提示:把伪列变成实列。Selectrn,empl
oyees_id,last_name,salaryFrom(Selectrownumrn,employees_id,last
_name,salaryFrom(Selectemployee_id,last_name,salaryFromemployeesOrderbysalarydesc))wherern<=50andrn>40;
献花(0)
+1
(本文系胡小哈526首藏)