Oracle数据库课件1第7章 视图_第1页
Oracle数据库课件1第7章 视图_第2页
Oracle数据库课件1第7章 视图_第3页
Oracle数据库课件1第7章 视图_第4页
Oracle数据库课件1第7章 视图_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

17.1创建视图视图(View)通过SELECT查询语句定义,它是从一个或多个表(或视图)导出的,用来导出视图的表称为基表(BaseTable),导出的视图称为虚表。在数据库中,只存储视图的定义,不存放视图对应的数据,这些数据仍然存放在原来的基表中。视图可以由一个基表中选取的某些行和列组成,也可以由多个表中满足一定条件的数据组成,视图就像是基表的窗口,它反映了一个或多个基表的局部数据。视图有以下优点:●

方便用户的查询和处理,简化数据操作。●简化用户的权限管理,增加安全性。●

便于数据共享。●

屏蔽数据库的复杂性。●

可以重新组织数据。

Oracle数据库教程(第2版)27.1创建视图7.1.1使用PL/SQL语句创建视图PL/SQL语句创建视图的语句是CREATEORREPLACEVIEW语句。语法格式:CREATEVIEW[schema_name.]view_name[(column[,...n])][WITH<view_attribute>[,…n]]ASselect_statement[WITHCHECKOPTION]说明:

●view_name:视图名称;scheme是数据库架构名

column:列名,此为视图中包含的列,最多可引用1024个列。

WITH子句:指出视图的属性

Oracle数据库教程(第2版)37.1创建视图

●select_statement:定义视图的SELECT语句,可在该语句中使用多个表或视图。●

WITHCHECKOPTION:指出在视图上进行的修改都要符合select_statement所指定的准则。【例7.1】使用CREATEVIEW语句,在stsys数据库中创建vwStudentScore视图,包括学号、姓名、性别、专业、课程号、成绩,且专业为计算机。CREATEORREPLACEVIEWvwStudentScoreASSELECTa.sno,a.sname,a.ssex,a.speciality,o,b.gradeFROMstudenta,scorebWHEREa.sno=b.snoANDa.speciality='计算机'WITHCHECKOPTION;

Oracle数据库教程(第2版)47.1创建视图7.1.2

使用图形界面方式创建视图【例7.2】使用图形界面方式,在stsys数据库中创建vwStudentCourseScore视图,包括学号、姓名、性别、课程名、成绩,按学号升序排列,且专业为计算机。(1)启动”SQLDeveloper”,在”连接”节点下打开数据库连接”sys_stsys”,右单击“视图”节点,在弹出的快捷菜单中选择”新建视图”命令,屏幕出现“创建视图”窗口,在“名称”框中,输入vwStudentCourseScore,在“SQL查询”选项卡中,输入如下的SQL查询语句:SELECTa.sno,a.sname,a.ssex,a.speciality,ame,c.gradeFROMstudenta,courseb,scorecWHEREa.sno=c.snoANDo=oANDa.speciality='计算机'ORDERBYa.sno

Oracle数据库教程(第2版)57.1创建视图输入SQL查询语句后的“创建视图”窗口如图7.1所示。(2)单击“确定”按钮,完成视图vwStudentCourseScore的创建。

Oracle数据库教程(第2版)67.2查询视图【例7.3】分别查询vwStudentScore视图、vwStudentCourseScore视图。

SNOSNAMESSEXSPECIALITYCNOGRADE--------------------------------------------------------------181001宋德成男计算机1004

94181002何静女计算机

100486181004刘文韬男计算机100490181001宋德成男计算机8001

91181002何静女计算机8001

87181004刘文韬男计算机800185181001宋德成男计算机120193181002何静女计算机

120176181004刘文韬男计算机120192Oracle数据库教程(第2版)使用SELECT语句对vwStudentScore视图进行查询:SELECT*FROMvwStudentScore;查询结果:77.2查询视图

SNOSNAMESSEXSPECIALITYCNAMEGRADE--------------------------------------------------------------181001宋德成男计算机高等数学

91181001宋德成男计算机数据库系统94181001宋德成男计算机英语93181002何静女计算机数据库系统86181002何静女计算机高等数学

87181002何静女计算机英语76181004刘文韬男计算机数据库系统90181004刘文韬男计算机高等数学85181004刘文韬男计算机英语92Oracle数据库教程(第2版)使用SELECT语句对svwStudentCourseScore视图进行查询:SELECT*FROMvwStudentCourseScore;查询结果:87.2查询视图【例7.4】查询计算机专业学生的学号、姓名、性别、课程名。SELECTsno,sname,ssex,cname

FROMvwStudentCourseScore;查询结果:

SNO

SNAMESSEXCNAME-------------------------------------------181001宋德成男数据库系统181001宋德成男高等数学181001宋德成男英语181002何静女数据库系统181002何静

女高等数学181002何静女英语181004刘文韬男数据库系统181004刘文韬男高等数学181004刘文韬男英语Oracle数据库教程(第2版)Oracle数据库教程(第2版)97.3修改视图定义

7.3.1使用PL/SQL语句修改视图定义【例7.5】将例7.1定义的视图vwStudentScore视图进行修改,取消专业为计算机的要求。CREATEORREPLACEVIEWvwStudentScoreASSELECTa.sno,a.sname,a.ssex,a.speciality,o,b.gradeFROMstudenta,scorebWHEREa.sno=b.snoWITHCHECKOPTION;使用SELECT语句对修改后的vwStudentScore视图进行查询,可看出修改后的vwStudentScore视图已取消专业为计算机的要求。SELECT*FROMvwStudentScore;Oracle数据库教程(第2版)107.3修改视图定义

SNOSNAMESSEXSPECIALITYCNO

GRADE-----------------------------------------------------------------181001宋德成男计算机100494181002何静女计算机100486181004刘文韬男计算机100490184001李浩宇男通信400292184002谢丽君女通信400278184003陈春玉女通信400289181001宋德成男计算机800191181002何静女计算机800187181004刘文韬男计算机800185184001李浩宇男通信800186184002谢丽君女通信8001184003陈春玉女通信800195181001宋德成男计算机120193181002何静女计算机120176181004刘文韬男计算机120192184001李浩宇男通信120182184002谢丽君女通信120175184003陈春玉女通信120191Oracle数据库教程(第2版)117.3修改视图定义7.3.2使用图形界面方式修改视图定义

【例7.6】使用图形界面方式修改例7.2创建的视图vwStudentCourseScore,以降序显示学分。(1)启动SQLDeveloper,展开“sys_stsys”连接,展开“视图”,选择vwStudentCourseScoret,单击鼠标右键,在弹出的快捷菜单中选择“编辑”命令,进入“编辑视图”窗口,可以修改视图定义,其操和创建视图类似,如图7.2所示。Oracle数据库教程(第2版)127.3修改视图定义

(2)在图7.2的“SQL查询”选项卡中,将SQL查询语句修改为:SELECTa.sno,a.sname,a.ssex,a.speciality,ame,c.gradeFROMstudenta,courseb,scorecWHEREa.sno=c.snoANDo=oANDa.speciality='计算机'ORDERBYa.snoDESC(3)单击“确定”按钮,完成vwStudentCourseScore视图定义的修改。(4)使用SELECT语句查询vwStudentCourseScore。SELECT*FROMvwStudentCourseScore;Oracle数据库教程(第2版)137.3修改视图定义

查询结果:SNOSNAMESSEXSPECIALITYCNAMEGRADE------------------------------------------------------------------------181004刘文韬男计算机英语92181004刘文韬男计算机高等数学85181004刘文韬男计算机数据库系统90181002何静女计算机数据库系统86181002何静女计算机高等数学87181002何静女计算机英语76181001宋德成男计算机英语93181001宋德成男计算机数据库系统94181001宋德成男计算机高等数学

91Oracle数据库教程(第2版)147.4删除视图7.4.1使用PL/SQL语句删除视图使用PL/SQL的DROPVIEW语句删除视图,语法格式:DROPVIEW<视图名>【例7.7】将视图vwStudentCourseScore删除。DROPVIEWvwStudentCourseScore;

Oracle数据库教程(第2版)157.4删除视图7.4.2使用图形界面方式删除视图【例7.8】删除视图vwStudentScore。启动SQLDeveloper,展开“sys_stsys”连接,展开“视图”,选择需要删除的视图,这里,选择vwStudentScore,单击鼠标右键,在弹出的快捷菜单中选择“删除”命令,在弹出的“删除”窗口中单击“应用”按钮即可。

Oracle数据库教程(第2版)167.5更新视图7.5.1可更新视图【例7.9】在stsys数据库中,以student为基表,创建专业为通信的可更新视图vwCommSpecialityStudent。创建视图vwCommSpecialityStudent语句如下:CREATEORREPLACEVIEWvwCommSpecialityStudentASSELECT*FROMstudentWHEREspeciality='通信';

Oracle数据库教程(第2版)177.3

更新视图使用SELECT语句查询vwCommSpecialityStudent视图SELECT*FROMvwCommSpecialityStudent查询结果:SNOSNAMESSEXSBIRTHDAYSPECIALITYSCLASSTC---------------------------------------------------------------------------------184001李浩宇男1997-10-24

通信

20183650184002谢丽君女1998-01-16通信20183648184003陈春玉女1997-08-09通信20183652

Oracle数据库教程(第2版)187.5更新视图7.5.2插入数据使用INSERT语句通过视图向基表插入数据。【例7.10】向vwCommSpecialityStudent视图中插入一条记录:('184006','吴维明','男','1998-03-14','通信','201836',50)。INSERTINTOvwCommSpecialityStudentVALUES('184006','吴维明','男','1998-03-14','通信','201836',50);使用SELECT语句查询vwCommSpecialityStudent视图的基表studentSELECT*FROMstudent;

Oracle数据库教程(第2版)197.5更新视图

上述语句对基表student进行查询,该表已添加记录('184006','吴维明','男','1998-03-14','通信','201836',50)。

查询结果:

SNOSNAMESSEXSBIRTHDAYSPECIALITYSCLASSTC------------------------------------------------------------------------------181001宋德成

1997-11-05计算机

20180552181002何静

1998-04-27计算机

20180550181004刘文韬

1998-05-13计算机

20180552184001李浩宇

1997-10-24通信

20183650

184002谢丽君

1998-01-16通信

20183648184003陈春玉

1997-08-09通信

20183652184006吴维明

1998-03-14通信

20183650Oracle数据库教程(第2版)207.5

更新视图7.5.3修改数据使用UPDATE语句通过视图修改基表数据。【例7.11】将vwCommSpecialityStudent视图中学号为184006的学生的总学分增加2分。UPDATEvwCommSpecialityStudentSETtc=tc+2WHEREsno='184006';使用SELECT语句查询vwCommSpecialityStudent视图的基表studentSELECT*FROMstudent;

Oracle数据库教程(第2版)217.5

更新视图上述语句对基表student进行查询,该表已将学号为184006的学生的总学分增加了2分。查询结果:SNOSNAMESSEXSBIRTHDAYSPECIALITYSCLASSTC------------------------------------------------------------------------------181001宋德成男1997-11-05计算机20180552181002何静女1998-04-27计算机20180550181004刘文韬男1998-05-13计算机20180552184001李浩宇男1997-10-24通信20183650184002谢丽君女1998-01-16通信20183648184003陈春玉女

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论