欢迎来到天天文库
浏览记录
ID:48797131
大小:398.00 KB
页数:32页
时间:2020-01-25
《学习与管饭的我的笔记 (4).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、系统中视图的应用任务1:选择employee表中的雇员ID、姓名、性别、和出生日期四个字段,以及product表中的产品ID、产品名和类别ID三个字段创建名为v_employee的视图(要求用企业管理器)任务2:利用employee表中的全部字段和记录创建名为view1_employee的视图(要求用SQL语句实现)任务3:选择employee表中的雇员ID、姓名、性别、出生年月和雇佣日期字段,以及所有女职工的记录创建名view2_employee的视图(要求用SQL语句实现)知识点:视图是一种数据库的对象,是
2、从一个或多个数据表(基本表)或视图导出的虚表,是关系数据库系统提供给用户以多种角度观察数据中数据的重要机制。虚表是指视图只存储了它的定义(select语句),而没有储存视图对应的数据,这些数据仍存放在原来的数据表中,对视图的数据操作与对表的操作一样,可以对其进行改变,若基表的数据发生变化,这种变化也会自动反映到视图中。视图可以是一个表的部分,也可以是多个表的联合。定义视图查询视图更新视图视图的作用snosnamesagesdeptstudentsnoscogradesco定义视图建立视图删除视图一、建立视图语句
3、格式CREATEVIEW<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITHCHECKOPTION];组成视图的属性列名:全部省略或全部指定子查询不允许含有ORDERBY子句和DISTINCT短语建立视图(续)RDBMS执行CREATEVIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。建立视图(续)[例1]建立信息系学生的视图。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStu
4、dentWHERESdept='IS';建立视图(续)[例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;withcheckoption可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到
5、;如果删除,当然只能删除视图里有显示的记录。我们来看下面的例子:createorreplaceviewtestviewasselectempno,enamefromempwhereenamelike‘M%’withcheckoption;这里我们创建了一个视图,并使用了withcheckoption来限制了视图。然后我们来看一下视图包含的结果:select*fromtestview得到:EMPNOENAME———-———–7654MARTIN7934MILLER这两条记录然后我们在试图将其中一条更新:up
6、datetestviewsetename=‘Mike’whereempno=7654;OK,这条更新语句可以执行,并没有什么问题,但是当我们执行另一条更新时:updatetestviewsetename=‘Robin’whereempno=‘7654′;就会出现ORA-01402:视图WITHCHECKOPTIDN违反where子句的错误。建立视图(续)对IS_Student视图的更新操作:修改操作:自动加上Sdept='IS'的条件删除操作:自动加上Sdept='IS'的条件插入操作:自动检查Sdept
7、属性值是否为'IS'如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为'IS'建立视图(续)基于多个基表的视图[例3]建立信息系选修了1号课程的学生视图。CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'ANDStudent.Sno=SC.SnoANDSC.Cno='1';建立视图(续)基于视图的视图[例4]建立信息系选修了1号课程且成绩在90分以上的
8、学生的视图。CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade>=90;建立视图(续)分组视图[例6]将学生的学号及他的平均成绩定义为一个视图假设SC表中“成绩”列Grade为数字型CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;建立视图(续)不指定
此文档下载收益归作者所有