《数据库原理及应用》课件第8章_第1页
《数据库原理及应用》课件第8章_第2页
《数据库原理及应用》课件第8章_第3页
《数据库原理及应用》课件第8章_第4页
《数据库原理及应用》课件第8章_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第8章视图8.1视图概述8.2创建视图8.3管理视图8.4利用视图操作数据8.5视图的应用【技能目标】

学会使用视图,能够结合实际需要灵活运用视图。

【知识目标】

掌握视图的基本概念;理解使用视图的意义;掌握创建视图的方法和步骤;掌握管理视图的方法;掌握利用视图操作数据的方法;掌握视图的应用。

8.1.1视图的概念

视图是一种常用的数据库对象,它类似于表,是采用二维表的形式显示数据的,不过视图是从一个或多个表甚至视图导出的虚表。相对于视图而言,表又称为基本表。数据存放在基本表中。

8.1视图概述视图是数据库中的一种逻辑对象。视图不同于表,视图只是保存数据库中的SELECT查询,是查看数据库中表数据的一种方法。每次引用视图时,其中的数据通过查询动态生成,视图中并没有保存数据,数据来源于基本表。

数据库中只存放视图的定义,而不存放视图对应的数据,数据存放在原来的基本表中。当基本表中的数据发生变化时,从视图中查询出的数据也会随之改变。

对视图所引用的基本表来说,视图实际是对基本表数据的筛选。8.1.2视图的作用

视图定义之后,用户就可以像操作基本表一样进行数据的查询和更新了。当通过视图更新数据时,相应基本表的数据也会随之更新;同时,若基本表的数据发生变化,则数据变化也会自动地反映到视图中。使用视图的好处主要体现在以下三个方面。

1)提高数据安全性

处于安全的考虑,用户不必看到数据库中的全部数据。视图相当于提供了一个特定的“窗口”,用户通过视图所看到的数据只与用户的需求有关,隐藏了无关数据。这样,通过视图限制用户访问数据的范围,有利于数据的安全控制管理,提高了数据的安全性。

2)简化用户的操作

对于非常复杂的查询,经常会涉及多个表,需要从多个表中查找满足条件的数据记录,通过将这个复杂的查询定义成一个视图,每次执行相同的查询时,只要执行一条简单的查询视图语句即可。如此一来,便简化了用户的操作。

3)屏蔽数据的复杂性

一方面,对于复杂的数据库表结构,用户不必了解,可以由数据库管理员在视图中将那些难以理解的列替换成用户容易理解和接受的名称;另一方面,数据库管理员在视图中屏蔽了与用户无关的数据,用户看到的是自己关注的数据内容。这样,用户看到的数据既易于理解又容易接受,而且是自己关注的部分,从而屏蔽了数据的复杂性。

在SQLServer2005中创建视图的方法有两种:一种是使用SQLServerManagementStudio创建视图;另一种是使用CREATEVIEW语句创建视图。

8.2创建视图8.2.1使用SQLServerManagementStudio创建视图

以下通过例8-1来了解使用SQLServerManagementStudio创建视图的方法。

【例8-1】在学生成绩管理系统数据库SCMS中创建一个学生情况的视图View_student,包含学号、姓名、性别、所在班级名称。

分析:View_student涉及两个表student和class,学号、姓名、性别包含在student表中,所在班级名称来源于class表。

具体操作步骤如下:

(1)启动SQLServerManagementStudio。

(2)在“对象资源管理器”窗口中展开“数据库|SCMS|视图”节点。

(3)右击“视图”节点,在弹出的快捷菜单中选择“新建视图”选项,如图8-1所示。

(4)打开“添加表”对话框,如图8-2所示。按住Ctrl键的同时选择class和student表,先单击“添加”按钮,再单击“关闭”按钮。

图8-1选择新建视图选项

图8-2“添加表”对话框

(5)弹出视图设计器界面,如图8-3所示。在该界面中共有四个区,分别是关系图窗格、网格窗格、SQL窗格和结果窗格。

图8-3视图设计器

说明

①关系图窗格:显示正在查询的表和表值对象。每个矩形表示一个表或表值对象,并显示可用的数据列,表之间的连接用矩形之间的连线表示出来。

②网格窗格:显示源数据表的字段,只有选中的字段才会显示在结果中。在网格中可以指定相应的选项,例如要显示的数据列、要选择的行及行的分组方式等。

SQL窗格:显示系统自动生成的SQL语句。

④结果窗格:显示一个网格,用来显示查询或视图检索到的数据。

(6)在关系图窗格中,选择包含在视图中的数据列。选择student表中的sno、sname和ssex字段;选择class表中的classname字段。此时相应的SQLServer脚本便自动显示在SQL窗格中。

(7)为了便于用户理解,将所有的列名改为汉字,可通过修改网格窗格中的“列名”列实现,修改结果如图8-3所示。此时相应的SQLServer脚本便显示在SQL窗格中。

(8)单击工具栏上的“执行”按钮,执行SQL语句,在结果窗格中就会显示出包含在视图中的数据行,如图8-3所示。

(9)单击工具栏上的“保存”按钮,打开“选择名称”对话框,如图8-4所示。输入视图名View_student,单击“确定”按钮保存视图,完成视图的创建。在“对象资源管理器”中刷新视图,即可看到新建的View_student视图。右击View_student,在弹出的快捷菜单中选择“打开视图”选项,即可显示视图的内容,如图8-5所示。

图8-4“选择名称”对话框图8-5View_student视图8.2.2使用CREATEVIEW语句创建视图

使用CREATEVIEW语句创建视图的语法格式如下:

CREATEVIEWview_name[(column[,…n])]

[WITHENCRYPTION]

AS

select_statement

[WITHCHECKOPTION]

参数说明如下:

view_name:新建视图的名称。●

column:视图中的列名。如果视图未指定列名,则视图列将获得与SELECT语句中的列相同的名称。

WITHENCRYPTION:对包含CREATEVIEW语句文本的条目进行加密。该选项使用后,无法看到包含CREATEVIEW语句文本的条目,创建者也无法再看到。所以创建者应在其他地方做个备份。

AS:表示视图要进行的操作。

select_statement:定义视图的SELECT语句。该语句可以使用多个表和其他视图。●

WITHCHECKOPTION:强制针对视图执行INSERT、UPDATE和DELETE操作时要保证插入、修改和删除的记录都必须满足视图中SELECT语句的筛选条件表达式。

说明在创建视图时,SELECT语句的使用有下列限制:

①不能包括ORDERBY、COMPUTE和COMPUTEBY关键字。

②不能包含INTO子句。

③不可以在临时表上创建视图。

【例8-2】在学生成绩管理系统数据库SCMS中创建09031011号班级的学生情况视图View_09031011。

USESCMS

GO

CREATEVIEWView_09031011

AS

SELECT*

FROMstudent

WHEREclassno='09031011'

【例8-3】在学生成绩管理系统数据库SCMS中创建选修了课程号为03201的课程的学生视图View_03201,包括学号、姓名、性别、班级号。

USESCMS

GO

CREATEVIEWView_03201(学号,姓名,性别,班级号)

AS

SELECTstudent.sno,sname,ssex,classno

FROMstudent,sc

WHEREsc.sno=student.snoANDcno='03201'

【例8-4】在学生成绩管理系统数据库SCMS中创建学生平均成绩视图View_avg,包括学号、平均成绩。

USESCMS

GO

CREATEVIEWView_avg(sno,savg)

AS

SELECTsno,AVG(result)

FROMsc

GROUPBYsc.sno

说明只有在下列情况下才必须指定CREATEVIEW子句中的列名:

①列不是单纯的字段名,而是列表达式。

②多表做连接操作,选同名列作为视图的字段。

③需要在视图中为某个列启用新的更合适的列名。

【例8-5】在学生成绩管理系统数据库SCMS中创建学生选课情况视图View_sc,包括学号、姓名、课程号、课程名、成绩。

USESCMS

GO

CREATEVIEWView_sc

AS

SELECTstudent.sno,sname,o,cname,result

FROMstudent,sc,course

WHEREsc.sno=student.snoANDo=o

【例8-6】创建学生成绩不及格的选课情况视图View_sc1。

USESCMS

GO

CREATEVIEWView_sc1

AS

SELECT*

FROMView_sc

WHEREresult<60

8.3.1查看视图

如果定义视图时没有加密,则可以通过调用系统存储过程sp_helptext查看视图定义

信息。

查看视图的语法格式如下:

sp_helptextview_name8.3管理视图

【例8-7】查看例8-4创建的学生平均成绩视图View_avg的信息。

USESCMS

GO

sp_helptextView_avg

执行结果如图8-6所示。图8-6查看视图定义文本8.3.2修改视图

在SQLServer2005中修改视图的方法有两种:一种是使用SQLServerManagementStudio修改视图;另一种是使用ALTERVIEW语句修改视图。

1.使用SQLServerManagementStudio修改视图

以下通过例8-8来了解使用SQLServerManagementStudio修改视图的方法。

【例8-8】将例8-1创建的View_student视图改为男生视图。

具体操作步骤如下:

(1)启动SQLServerManagementStudio。

(2)在“对象资源管理器”窗口中展开“数据库|SCMS|视图”节点。

(3)右击View_student,在弹出的快捷菜单中选择“修改”选项,打开如图8-7所示的视图设计器。图8-7设计View_student视图

(4)在网格窗格的“筛选器”列中,将鼠标定位到ssex行,在“筛选器”单元格中输入筛选条件“男”,输入结果如图8-7所示。

(5)单击工具栏上的“执行”按钮,执行SQL语句,在结果窗格中将会显示出包含在视图中的数据行,结果如图8-7所示。

(6)单击工具栏上的“保存”按钮,保存对视图的修改,则完成对View_student视图的修改。

2.使用ALTERVIEW语句修改视图

使用ALTERVIEW语句修改视图的语法格式如下:

ALTERVIEWView_Name[(column[,…n])]

[WITHENCRYPTION]

AS

Select_statement

[WITHCHECKOPTION]

其参数含义与CREATEVIEW语句相似。

【例8-9】将例8-8修改后的男生视图再改为女生视图。

USESCMS

GO

ALTERVIEWView_student

AS

SELECTsnoAS学号,snameAS姓名,ssexAS性别,classnameAS所在班级名称

FROMclassINNERJOINstudentONclass.classno=student.classno

WHEREssex='女'8.3.3删除视图

在SQLServer2005中删除视图的方法有两种:一种是使用SQLServerManagementStudio删除视图;另一种是使用DROPVIEW语句删除视图。

1.使用SQLServerManagementStudio删除视图

在学生成绩管理系统数据库SCMS中删除视图的操作步骤如下:

(1)在“对象资源管理器”中展开“数据库|SCMS|视图”节点。

(2)选中要删除的视图右击,在弹出的快捷菜单中选择“删除”选项。

(3)打开“删除对象”对话框,单击“确定”按钮,即可成功删除选定视图。

2.使用DROPVIEW语句删除视图

使用DROPVIEW语句删除视图的语法格式如下:

DROPVIEWview_name[,…n]

【例8-10】删除例8-9修改后的View_student视图。

USESCMS

GO

DROPVIEWView_student

通过视图可以查询数据,也可以修改视图中的数据。但实际上视图本身并不保存数据记录,因此通过视图来修改基本表的数据最终转化为对基本表的操作。

8.4利用视图操作数据8.4.1查询操作

【例8-11】通过例8-4创建的View_avg视图查询平均成绩大于等于90分的学生的学号和平均成绩。

USESCMS

GO

SELECT*FROMView_avgWHEREsavg>=90

执行结果如图8-8所示。

图8-8利用视图查询平均成绩大于等于90分的学生的学号和平均成绩

【例8-12】通过例8-2创建的View_09031011视图查询09031011号班级的女生情况。

USESCMS

GO

SELECT*FROMView_09031011WHEREssex='女'

执行结果如图8-9所示。图8-9利用视图查询09031011号班级的女生情况8.4.2插入操作

【例8-13】通过例8-2创建的View_09031011视图插入一条记录。

USESCMS

GO

INSERTINTOView_09031011

VALUES('200903101108','刘天乐','男','2009-09-01','1989-06-15','liutianle@163.com','2886350','甘肃省兰州市城关区静宁路234号','09031011',NULL,NULL)

执行结果如图8-10所示。图8-10利用视图插入数据记录8.4.3修改操作

【例8-14】通过例8-2创建的View_09031011视图修改例8-13中添加的记录,加上学生评语:“专业能力强,有良好的协作精神”。

UPDATEView_09031011

SETremark='专业能力强,有良好的协作精神。'

WHERESNO='200903101108'

执行结果如图8-11所示。图8-11利用视图修改数据记录8.4.4删除操作

【例8-15】通过例8-2创建的View_09031011视图删除例8-13中添加的记录。

DELETE

FROMView_09031011

WHERESNO='200903101108'

说明在做删除操作时视图定义的FROM子句中只能有一个基本表,否则删除操作不能完成。

在学生成绩管理系统数据库SCMS中除了以上例题中创建的视图

温馨提示

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

评论

0/150

提交评论