资源描述:
《《视图同义词序列》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章视图、同义词、序列2021/7/241上节回顾Oracle10g数据类型表操作:创建、修改和删除完整性约束实现2021/7/242本讲目标了解视图的概念和作用掌握视图的创建、修改和删除掌握同义词的概念及使用掌握序列的创建与使用2021/7/243本章内容本章内容:(1)视图(2)同义词(3)序列本章重点:(1)视图、同义词和序列的操作本章难点:(1)同义词概念2021/7/2448.1、数据库的视图概念视图是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基表——BaseTable)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视
2、图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基表。视图可以由以下任意一项组成:(1)一个基表的任意子集(2)两个或者两个以上基表的合集(3)两个或者两个以上基表的交集(4)对一个或者多个基表运算的结果集合2021/7/245视图一经定义以后,就可以象表一样被查询、修改、删除和更新。使用视图有下列优点:(1)为用户集中数据,简化用户的数据查询和处理。(2)屏蔽数据库的复杂性。(3)简化用户权限的管理。(4)便于数据共享。(5)可以重新组织数据以便输出到其它应用程序中。8.2、创建视图1.用OEM创建视图2021/7/2462.使用createview语句创
3、建视图语法格式:create[orreplace]view视图名[视图列名]asselect语句[withcheckoption][withreadonly]【例1】创建v1视图,包括”SALES”部门各员工的部门名称、员工编号、员工姓名、员工工资。createviewv1(部门,编号,姓名,工资)asselectdname,empno,ename,sal+nvl(comm,0)fromemp,deptwhereemp.deptno=dept.deptnoanddname='SALES';【例2】创建各部门员工的平均工资视图v2,包括部门编号和平均工资。createviewv2(部
4、门编号,平均工资)asselectdeptno,avg(sal+nvl(comm,0))fromempgroupbydeptno8.3.1、查询视图1.select语句查询视图【例】查找“SALES”部门的员工编号、员工姓名和员工工资。2021/7/247【例】查找平均工资在2000以上的部门编号和平均工资。select*fromv2where平均工资>2000;8.3.2、更新视图1.可更新视图要通过视图更新基表数据,必须保证视图是可更新视图。一个可更新视图满足以下条件:(1)没有使用连接函数、集合运算函数和组函数;(2)创建视图的SELECT语句中没有聚合函数且没有GROUPB
5、Y等关键字;(3)创建视图的SELECT语句中不包含从基表列通过计算所得的列;(4)创建视图没有包含只读属性。2021/7/248通过更新视图(包括插入、修改和删除)数据可以修改基表数据。但并不是所有的视图都可以更新,只有对满足可更新条件的视图,才能进行更新。【例】创建视图v3,该视图仅包括部门编号为10的员工信息。createviewv3asselect*fromempwheredeptno=10;2.插入数据:使用insert语句通过视图向基本表插入数据。【例】向v3视图中插入一条记录:insertintov3values(8888,'CLARK','MANAGER',7839
6、,'09-6月-81',2450,200,10);insertintov3values(9999,'AAAA','MANAGER',7839,'09-6月-81',9000,500,20);3.修改数据:使用updateE语句可以通过视图修改基本表的数据。【例】将v3视图中所有员工的佣金增加100。updatev3setcomm=nvl(comm,0)+100;updatev3setcomm=666whereempno=8888;updatev3setcomm=333whereempno=9999;该语句实际上是将v3视图所依赖的基本表emp中所有部门编号为10的记录的佣金字段值在
7、原来基础上增加100。若一个视图依赖于多个基本表,则一次修改该视图只能变动一个基本表的数据。4.删除数据:使用delete语句可以通过视图删除基本表的数据。但要注意,对于依赖于多个基本表的视图,不能使用delete语句。例如,不能通过对v3视图执行delete语句而删除与之相关的基本表emp及v3视图的数据。【例】删除v3中编号为888的员工记录。deletefromv3whereempno=8888;deletefromv3whereempno=9999;8.3.2