视图教学课件_第1页
视图教学课件_第2页
视图教学课件_第3页
视图教学课件_第4页
视图教学课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

r

主要内容

1视图概述更

2创建视图

3使用视图的优点和缺点

4创建视图示例

5视图信息的查看3及

6视图的修改、删除与重命名:炉

7视图数据的查询、插入、修改与删除

返回目录

3.8.1视图概念

■视图是一种数据库对象,是从一个或者多个数据表或视

图中导出的虚表,视图的结构和数据是对数据表进行查

询的结果。

■视图被定义后便存储在数据库中,通过视图看到的数据

只是存放在基表中的数据。当对通过视图看到的数据进

行修改时,相应的基表的数据也会发生变化,同时,若

基表的数据发生变化,这种变化也会自动地反映到视图

中。

■视图可以是一个数据表的一部分,也可以是多个基表的

联合;视图也可以由一个或多个其他视图产生。

■一旦视图定义后,就可以用select语句象对真实表一样查

询。

3

382创建视图

■2.1使用Transact-SQL语句创建视图

■1.创建视图的SQL语句的语法形式

CREATEVIEW[<owner>.]view_name

[(column_name[,...n])]-

[WITHENCRYPTION]

AS

select_statement

FROMtable_nameWHEREsearch_condition

[WITHCHECKOPTION]一

.其中:

•-viewname:为新创建的视图指定的名字,视图名称必

须符合标识符规则。

•-columnname:在视图中包含的列名也可以在SELECT

语而不指定列名。

4

•-table_name:视图基表的名字。

•-selec^statement:选择哪些列进入视图的SELECT语句。

•-WHEREsearch_condition:基表数据进入视图所应满足

的条件一

•"WITHCHECKOPTION:迫使通过视图执行的所有数

据修改语句必须符合视图定义中设置的条件。

•-WITHENCRYPTION:对视图的定义进行加密。

■2.用SQL语句创建视图的步骤

■在创建视图时,应首先测试SELECT语句以确保能返回正确

的结果。创建视图的步骤如下:

•①编写用于创建视图的SELECT语句。

•②对SELECT语句进行测试。

■③检查测试结果是否正确,是否和预期的一样。

■④创建视图。

5

■3.在创建视图的时候,应该考虑以下因素

•①在CREATEVIEW语句中,不能包括ORDERBY、

COMPUTE或者COMPUTEBY子句,也不能出现INTO

关键字。

•②创建视图所参考基表的列数最多为1024列。

•③创建视图不能参考临时表。

•④在一个批处理语句中,CREATEVIEW语句不能和

其他Transact-SQL语句混合使用。

•⑤尽量避免使用外连接创建视图。

6

工,r

■2.2使用SQLServerManagementStudio创建视图

■假设要从student表中建立一个性别为“男”、包含

student_id>student_name>class_id>sex四列信息的视

So

■f%SQLServerManagementStudio创建视图的具体步骤

■1)首先进入SQLServerManagementStudioo

■2)按顺序展开“数据库”、要创建视图所属的数据库、再

展开“视图”子节点。

■3)右边“摘要”窗口显示的是数据库中已经存在的视图,

右击窗口的空白处,在弹出的快捷菜单上选择“新建视图”

项,系统弹出如图9-1的“添加表”窗口,这个窗口用于为

新创建的视图提供基础数据。该窗口有三个选项卡,表、

视图及函数,这意味着可以以表、视图及表值函数为基础

数据创建新的视图。

7

图1创建视图的窗口

4)点击“添加”,选择表student,再点击“关闭”

系统呈现如图2的视图建立窗口。

8

■在SQL查询条件窗格中输入查询条件语句:

SELECTstudentjd,student_name,classjd,sex

FROMstudentWHEREsex=1

■5)确认结果正确后,点击工具栏上的按钮,保存当前

创建的视图,输入视图的名称,点击“确定”按钮,一个

视图也就创建完成了。

节置预

10

3.8.3使用视图的优点和缺点

■1.视图的优点

•视图可以屏蔽数据的复杂性,简化用户对数据库的操作,

还可以使用视图重新组织数据。

•视图可以让不同的用户以不同的方式看到不同或者相同

的数据集。

•安全保护:视图可以定制不同用户对数据的访问权限。

■2.视图的缺点

•性能降低:

•修改的限制:

3.8.4创建视图示例

■4.1创建水平视图型

■4.2创建投影视图2

・4.3创建联合视图*

■4.4创建包含集合函数的视图

■4.5创建视图的视图*

12

4.1创建水平视图

■视图的常见用法是限制用户只能够存取表中的某些数据行,

用这种方法产生的视图称为水平视图,即表中行的子集。

【例1】在数据库JWGL的表student上创建一个视图

student_view1,视图的数据包括班级号为七99402'或

'g994d3'所有学生的资料。

USEjwgl

GO

CREATEVIEWstudent_view1

AS

SELECT*FROMstudent

WHERE(classjd='g99402'ORclassjd='g99403')

13

4.2创建投影视图

■如果限制用户只能存取表中的部分列的数据,那么,使用这

种方法创建的视图就称为投影视图,即表中列的子集。

【例2】创建一个名为“studdent_view2”的视图,它从数据库

JWGL的student表中查询出性别为“男”的所有学生的姓名、

性别、家庭住址等资料。

USEjwgl

GO

CREATEVIEWstudent_view2

AS

SELECTstudentjdAS学号,student_nameAS姓名,

sexAS性另U,class_id班级,home_addrAS家庭

住址,entrance_dateAS入学时间,birthAS出生卒月

FROMstudent

WHEREsex=1WITHCHECKOPTION

14

4.3创建联合视图

■使用视图的一个原因是简化多表查询,可以生成从多个表中提取

数据的联合视图(joinedView)把查询结果表示为一个单独的“可

见表。

【例3】创建一个名为“student_view3”的视图,它是由表course、

book及classcourse创建的二叶显示“g99402”班所开课程的课

程名、所用教材的教材名、出版社及作髻的视图。

USEjwgl

GO

CREATEVIEWstudent_view3

WITHENCRYPTION/*力口密视图7

AS

SELECTcourse.course_nameAS课程名,book.book_nameAS书名,

book.publish_companyAS出版社,book.authorAS作者

FROMcourse,book,class_course

WHERE(course.bookjd=book.bookJdAND

class_course.courselid=course.coiirsejd)AND

(class^course.classjid='g99402')一

15

44创建包含集合函数的视图

■在视图定义中可以包含GROUPBY和集合函数,从而将这些汇

总数据放到一人“可见”的表中,允许用户对它们做进一步的查

葡。要注意,由现在SELECT子句中的歹。名,要么苞含在集合函

数中,要么包含在GROUPBY子句中。

【例4】使用集合函数SUM和GROUPBY子句以studentcourse表

为基表,创建一个名为“studentsumview4\能显示所看学至

学号和总成绩的视图。一一

USEjwgl

GO

CREATEVIEWstudent_sum_view4(学号,总成绩)

AS

SELECTstudentjd,sum(grade)FROMstudent_course

GROUPBYstudentjd-

注意:与水平视图和投影视图不同,本例产生的视图中的行与基

本表中的行不是一一对应的,它是一些行数据的汇总,因此,不

能通过视图来修改数据。伐

4.5创建视图的视图

■前面创建的视图都是在表的基础上创建的,在视图的基础上

还可以创建视图。

【例5】从视图student_view1创建一个名为

Ustudent_view5\能查询出班级名为“g99402”的所有学

生资料的视图。

USEjwgl

GO

CREATEVIEWstudent_view5

AS

SELECT*FROMstudent_view1

WHEREclassjd='g99402,

GO17

3.8.5查看视图信息

■使用系统存储过程查看视图信息

•sp_help数据库对象名称

•sp_helptext视图(触发器、存储过程)

•spdepends数据库对象名称

■1.使用系统存储过程

•①查看视图的名称、拥有者及创建日期等信息

sp_helpstudent_view1

•②杳看视图的定义脚本

sp_helptextstudent_view1

■③查看数据的来源一

sp_dependsstudent_view1

■2.使用SQLServerManagementStudio查看视

(P164),

节及2

3.8.6视图的修改、删除与重命名

■6.1视图的修改:将

■6.2视图的删除型

■6.3视图的重命名:淤

19

6.1视图的修改

■1.使用SQLServerManagementStudio修改视图(略)

■2.使用Transact-SQL语句修改视图

ALTERVIEWview_name

[(column[,…n])]

[WITHENCRYPTION]

AS

select_statement

[WITHCHECKOPTION]-

■在以上语句的语法中:

•-view_name:被修改的视图的名字。

•-column_name:在视图中包含的列名。

•-WITHCHECKOPTION:迫使通过视图进行数据修改的

所有语句必须符合视图定义中设置的条件。

20

•-table_name:视图基表的名字。

•-WITHENCRYPTION:对包含创建视图的SQL脚本进行

加密。

【例6】修改视图student_view1的定义,使其从student表中查

询出性别为“女”的所有学生的资料。

USEjwgl

GO

ALTERVIEWstudent_view1

AS

SELECT*FROMstudent

WHEREsex=0

21

6.2视图的删除

■删除一个视图,就是删除视图的定义及其赋予的全部权限,而

原先通过视图获得的数据并没有被删除。删除视图参考表的

时候,视图不会被删除,视图必须被单独删除。删除视图有

两种方法,一是使用SQLServerManagementStudio删除,

二是用DROPVIEW语句删除。

■1.用DROPVIEW语句删除视图

■DROPVIEW语句的语法形式如下:

DROPVIEWview_namel,view_name2,...

■使用DROPVIEW语而可以一次册森多个视图。下面的例子

是将student_view5视图删除。

DROPVIEWstudent_view5

22

■2.使用SQLServerManagementStudio删除视图

•①进入SQLServerManagementStudio,展开

相应的服务器组和相应的服务器节点。

•②展开“数据库”节点,然后展开视图所属的

数据库,再展开“视图”子节点。

•③在右侧的视图资料显示窗口上,右击视图

student__view1,在弹出的快捷菜单中,单击“删

除”菜箪命令,再单击“全部除去”按钮即可将

选定的视图删除。

23

6.3视图的重命名

■视图创建后,有时需要对视图重命名,对视图重命

名有两种方法:一是用SQLServerManagement

Studio,二是用系统存储过程spjename。

■1.使用系统存储过程重命名视图

■使用系统存储过程sp_rename对视图重命名的语法

形式是:

sp_renameold_view_name,new_view_name

下面示例是将视图student_view3重命名为

new_student_view3:

sp_renamestudent_view3,new_student_view3

24

■2.使用SQLServerManagementStudio对视图重命名

■使用SQLServerManagementStudio对视图重命名

的步骤如下:

•@iSASQLServerManagementStudio,展开相应的服

务器组和相应的服务器节点。

•②展开“数据库”节点,然后展开视图所属的数据库,

再展开“视图”子节点。

•③在右侧的视图资料显示窗口上,右击要重命名的视图,

在弹出的快捷菜单中,单击“重命名”菜单命令。

•④此时,视图名称变为可编辑状态,输入新的视图名称

并按〈Enter〉键即可。

25

3.8.7视图数据的查询、插入、修改与删除

7.1用T-SQL语句进行视图数据的查询、插入、修改与

删除

■使用T-SQL语句可以进行视图数据的查询、插入、修改与删

除。其语法形式和对表中数据的查询、插入、修改与删除操作

几乎一样。

■1.从视图中查询数据

【例7】从视图student_view2中查询出学生姓名为“钱利”的学

生资料。

USEjwgl

GO

SELECT*FROMstudent_view2

WHERE姓名+钱利,

想一想,为什么WHERE子句不能用student_name=,钱利,?

26

■2.向视图插入数据

【例8】向视图student_view2中插入一行数据。学号、姓

名、性别、班级、家庭住址'入学时间,出生年月分别是

“g9940210",“赵青""男"Jg99402”,“南京中山

北路10号",M999-09-01','1985-01-09'。

USEjwgl

GO

INSERTINTOstudent_view2

(学号,姓名,性别,班级,家庭住址,入学时间,出生年月)

VALUES('g9940210','赵青/,'g99402','南京中山北路

1999-09-0171985-01-09,)

27

■3.修改视图中的数据

【例9】将视图studentview2中“钱利”同学的家庭住址改为

“扬州市南京路8号歹

USEjwgl

GO

UPDATEstudent_view2

SET家庭住址+痂W市南京路8号’

WHERE姓名='钱利,

■4.删除视图中的数据

【例10】将视图student_view2中“钱利”同学的资料删除

USEjwgl

GO

DELETEFROMstudent_view2

WHERE姓名㈢钱利,一

28

工二I

■7.2用SQLServerManagementStudio进行视图数

据的插入、修改与删除

■使用SQLServerManagementStudio对视图插入、修改与

删除数据

•@iSASQLServerManagementStudio,展开相应的

服务器组和相应的服务器节点。

•②展开“数据库”节点,然后展开视图所属的数据库,

再展开“视图”子节点。

•③右击要操作的视图名称,分别单击“打开视图”、

“返回所有行”,便会出现图9-3的视图数据显示窗口。

•插入数据:直接在视图的最后一行进行数据的插入。

・修改数据:直接点击要修改的数据进行修改。

■删除数据:右击图9-3的窗口的要删除数据行的最左列,

在弹出的快捷菜单上点击“删除”

•④操作完成后,点击工具栏上的“!”,确认视图数据

的修改。

29

■7.3修改视图数据

温馨提示

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

评论

0/150

提交评论