第8章 视图.docx
《第8章 视图.docx》由会员分享,可在线阅读,更多相关《第8章 视图.docx(16页珍藏版)》请在冰点文库上搜索。
第8章视图
第8章视图
关键词:
视图 创建视图 使用视图 修改视图 查询视图 删除视图
学习要求:
本章主要阐述了SQL Server 2000中视图的创建和使用方法。
并且全面地、系统地介绍了视图与表之间的区别和联系;视图的优点;创建、修改和删除视图的方法。
重点分析了视力的创建和使用方法。
学习和掌握本章,是对SQL Server 2000数据库的灵活运用。
8.1视图概述
视图是从一个或者多个表中使用SELECT语句导出的虚表。
只有形没有值
可对视图进行查询操作,但对视图的更新要受到限制。
目的是节省存储空间
视图的优点:
●将数据集中显示。
使用户只关心他们感兴趣的某些特定数据和他们所负责的特定任务。
●屏蔽数据的复杂性,简化用户对数据库的操作。
●可以使用视图重新组织数据,对数据表进行分块显示。
●提供数据安全性。
视图把用户可以使用的数据定义在视图中,这样用户就不能使用视图定义外的其他数据,从而保证了数据安全性。
8.2创建视图
引言
视图在数据库中是作为一个独立的对象进行存储的。
创建视图要考虑如下的原则:
●只能在当前数据库中创建视图。
使用分布式查询定义的视图除外。
●视图名称必须遵循标识符的规则,且对每个用户必须为唯一。
此外,该名称不得与该用户拥有的任何表的名称相同。
●可以在其他视图和引用视图的过程之上建立视图。
●定义视图的查询不可以包含ORDER BY. COMPUTE或COMPUTE BY子句或INTO关键字。
●不能在视图上定义全文索引。
●不能创建临时视图,也不能在临时表上创建视图。
8.2.1使用企业管理器创建视图
在企业管理器中,创建视图的操作步骤如下:
(1)打开企业管理器,在相应的数据库文件夹下面,右击“视图”文件夹,然后执行“新建视图”命令,打开新建视图对话框。
(2)在对话框的第一栏中,右击鼠标,打开快捷菜单,执行其中的“添加表”命令,如下图8-1所示。
图8-1 新建视图
(3)在打开的“添加表”对话框中,可以选择表、视图或者函数,然后单击“添加”按钮,就可将其添加到视图的查询中。
这里选择school数据库的student、course和score表,如下图8-2所示。
图8-2 添加表
(4)选择表、视图或者函数后,单击“关闭”按钮,返回新建视图对话框。
(5)在第一栏中,可看到添加进来的student、course和score表,并且显示出了它们之间的关联。
在每一字段前面都包含一个复选框,可以选择该复选框将其添加到视图中。
这里依次选择student.sname、ame和score.degree字段,如下图8-3所示。
图8-3 新视图
(6)选择字段后,单击工具栏上的“保存”按钮。
(7)在弹出的对话框中输入视图的名称,这里输入st_degree,然后单击“确定”按钮,即可完成视图st_degree的创建,如下图8-4所示。
图8-4 另存为界面
8.2.2使用向导创建视图
使用向导创建视图的操作步骤:
(1)在企业管理器中,执行“工具”菜单中的“向导”命令,打开“选择向导”对话框。
选择“数据库”文件夹下的“创建视图向导”选项,单击“确定”按钮,如下图8-5所示。
图8-5 选择向导
(2)在打开的“欢迎使用创建视图向导”对话框中,单击“下一步”按钮,向导提示选择数据库。
可以在“数据库名称”下拉列表框中选择要创建的视图所在的数据库。
这里选择school数据库,然后单击“下一步”按钮,如下图8-6所示。
图8-6 创建的视图向导1
(3)向导提示选择数据库对象。
通过选择“包含在视图中”复选框来选择视图所使用的数据库对象。
这里创建一个如同st_degree视图的视图st1_degree,因此选择student、course和score表。
单击“下一步”按钮,如下图8-7所示。
图8-7 创建的视图向导2
(4)向导提示选择视图需要的列。
这里选择dbo.student.sname、ame和dbo.score.degree字段。
单击“下一步”按钮,如下图8-8所示。
图8-8 创建的视图向导3
(5)在出现的创建视图限制对话框,输入视图限制的SQL语句,这里输入:
WHERE student.sno=score.sno AND o=o
然后单击“下一步”按钮,如下图8-9所示。
图8-9 创建的视图向导4
(6)向导提示输入视图的名称“st1_degree”。
单击“下一步”按钮,如下图8-10所示。
图8-10 创建的视图向导5
(7)向导显示出用于创建视图的完整的SQL语句。
用户可以再次修改该语句。
单击“完成”按钮即可创建视图,如下图8-11所示。
图8-11 创建的视图向导6
8.2.3使用SQL语句创建视图
格式:
CREATE VIEW [database_name.] [ owner.] view_name
[(column [,…n])]
[WITH view_attribute [,…n ]]
AS
select_statement
[WITH CHECK OPTION]
view_attribute定义为:
{ENCRYPTION | SCHEMABINDING | VIEW_METADATA}
各主要参数的含义如下:
●view_name:
视图的完整名称,它必须符合标识符规则。
●AS:
是视图要执行的操作。
●select_statement:
是定义视图的SELECT语句。
●WITH CHECK OPTION:
强制视图上执行的所有数据修改语句都必须符合由select_ statement设置的准则。
●WITH ENCRYPTION:
加密包含CREATE VIEW语句文本的系统表列。
凡加密了的视图,在企业管理器中将不能查看视图定义信息。
例:
创建st2_degree视图,其中包括了学生姓名、课程和成绩。
USE school
GO
CREATE VIEW st2_degree
AS
SELECT student.sname AS ’姓名’,ame AS ’课程’,
score.degree AS ’成绩’
FROM student,course,score
WHERE student.sno=score.sno AND o=o
GO
8.3使用视图
8.3.1使用视图进行数据检索
例:
利用st2_degree视图来查询所有学生的成绩。
USE school
GO
SELECT * FROM st2_degree
GO
也可在企业管理器中查看视图数据。
操作步骤如下:
(1)打开企业管理器,展开服务器组,然后展开服务器。
(2)展开“数据库”文件夹,展开该视图所属的数据库,然后单击“视图”文件夹。
(3)在要查看的视图上右击鼠标,打开一快捷菜单,执行“打开视图”子菜单中的“返回所有行”命令,即可打开指定的视图查看数据。
8.3.2通过视图修改数据
(一)视图更新规则
对视图更新有以下三条规则:
●若视图是由两个以上基表导出的,则该视图不允许更新。
●若在导出视图的过程中,使用了分组和集函数的,则该视图不允许更新。
●若视图是从单个基本表中使用选择、投影导出的,并且包含了侯选关键字(这类视图称为行列子集视图),则该视图允许执行更新操作。
(二)使用视图之例
例:
在test数据库中创建一个表和基于该表的视图,并利用视图插入了两个记录。
USE test
GO
--如果表Table4存在,则删除
IF EXISTS(SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = ’Table4’)
DROP TABLE Table4
GO
--如果视图Viewl存在,则删除
IF EXISTS(SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = ’View1’)
DROP VIEW View1
GO
--创建表Table4
CREATE TABLE Table4(col1 int,col2 varchar(30))
GO
--创建视图Viewl
CREATE VIEW View1 AS SELECT col2, col1 FROM Table4
GO
--通过视图View1插入一笔记录
INSERT INTO View1 VALUES (’第1行’,1)
GO
INSERT INTO View1 VALUES (’第2行’,2)
--查看插入的记录
SELECT * FROM Table4
GO
8.4视图的修改
8.4.1修改视图
1、使用企业管理器
使用企业管理器修改视图的操作步骤如下:
(1)打开企业管理器,展开服务器组,然后展开服务器。
(2)展开“数据库”文件夹,展开该视图所属的数据库,然后单击“视图”。
(3)在右侧的详细信息窗格中,右击要修改的视图,然后单击“设计视图”命令。
即可打开设计视图对话框。
在此对话框中,可修改视图的定义。
(4)下图打开的是test数据库的View1视图的“设计视图”对话框。
如果要添加表,则可以在上面的窗格中右击鼠标,然后选择“添加表”命令。
若要删除表,则可以在表的标题栏上右击鼠标,然后选择“删除”命令,如下图8-12所示。
图8-12 设计视图
(5)在中间的网格窗格的某一列上,右击鼠标,然后单击“属性”命令,则打开列的“属性”对话框。
在此对话框中可以设置列的属性。
其中,选中“输出全部列” 复选框则在视图的结果中显示所有列,选中“DISTINCT值” 复选框则筛选出结果集中的重复值,选中“加密浏览” 复选框则加密视图的定义,选中“顶端”复选框则输入要在结果集中返回的行数,“所有者”下拉列表中显示该视图的所有者,如下图8-13所示。
图8-13 属性界面
(6)设置完成后,单击“关闭”按钮。
要保存对视图的修改,可单击工具栏上的“保存”按钮。
2、使用ALTER VIEW语句
格式:
ALTER VIEW [database_name.]
[owner.] view_name [(column [,…n])]
[WITH viewes_attribute [,…n]]
AS
select_statement
[WITH CHECK OPTION]
view_attribute定义为:
{ENCRYPTION | SCHEMABINDING | VIEW_METADATA}
各参数的含义与CREATE VIEW语句中的参数相同。
8.4.2重命名视图
(一)重命名视图应注意的问题
1、重命名的视图必须位于当前数据库中。
2、新名称必须遵守标识符规则。
3、只能重命名自己拥有的视图。
4、数据库所有者可以更改任何用户视图的名称。
(二)重命名视图的方法
1、可以通过企业管理器完成
在企业管理器中,只要在要重命名的视图上右击鼠标,执行“重命名”命令,然后输入新的视图名称即可。
2、通过sp_rename存储过程完成
格式:
sp_rename [@objname = ] ’object_name’,
[@newname = ] ’new_name’
[,[ @objtype = ] ’object_type’]
object_type:
要重命名的对象的类型。
例:
将视图View1重命名为View2。
USE test
GO
EXEC sp_rename ’View1’,’View2’
GO
8.5视图信息的查询
引言
如果视图定义没有加密,即可获取该视图定义的有关信息。
8.5.1使用企业管理器查询视图信息
使用企业管理器查看视图信息的操作步骤如下:
(1)打开企业管理器,展开服务器组,然后展开服务器。
(2)展开“数据库”文件夹,展开该视图所属的数据库,然后单击“视图”文件夹。
在右侧详细信息窗格中,右击要查看信息的视图,例如“View2”视图,然后执行“属性”命令。
(3)在打开的“查看属性”对话框中,中间部分显示该视图的定义,可以直接修改该视图的定义。
单击“检查语法”按钮可对视图的定义进行语法检查。
单击“权限”按钮,将打开权限设置对话框,如下图8-14所示。
图8-14 查看属性界面
(4)在权限设置对话框中,可以设置用户对该视图所具有的权限,可设置的权限有:
SELECT、INSERT、UPDATE、DELETE、EXEC和DRI权限。
(5)设置完成后,单击“确定”按钮,关闭设置权限对话框。
(6)在“查看属性”对话框中,单击“确定”按钮即可,如下图8-15所示。
图8-15 对象属性界面
8.5.2使用sp_helptext存储过程查询视图信息
格式:
sp_helptext [@objname = ] ’name’
例:
USE school
GO
EXEC sp_helptext st2_degree
8.6视图的删除
8.6.1使用企业管理器删除视图
使用企业管理器删除视图的操作步骤如下:
(1)打开企业管理器,展开服务器组,然后展开服务器。
(2)展开“数据库”文件夹,展开该视图所属的数据库,然后单击“视图”文件夹。
(3)在右侧详细信息窗格中,右击要删除的视图,在出现的快捷菜单中单击“删除”命令,如下图8-16所示。
图8-16 控制台根目录界面
(4)在打开的“除去对象”对话框中,“显示相关性”按钮用于查看删除此视图对数据库的影响。
单击“全部除去”按钮即可删除视图;单击“取消”按钮取消删除操作,如下图8-17所示。
图8-17 除去对象界面
8.6.2使用Transact-SQL删除视图
格式:
DROP VIEW {view_name} [,…n]
例:
USE test
GO
--如果视图View1存在,则删除
IF EXISTS(SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = ’View1’)
DROP VIEW View1
GO
重点分析
本章主要讨论了关于视图的创建和使用方法,对视图与表之间的区别和联系、视图的优点等基本概念要清楚,对创建、修改和删除视图的方法等基本操作要熟练掌握。
1、视图是从一个或者多个表中使用SELECT语句导出的虚表。
2、视图的优点:
(1)将数据集中显示。
使用户只关心他们感兴趣的某些特定数据和他们所负责的特定任务。
(2)屏蔽数据的复杂性,简化用户对数据库的操作。
(3)可以使用视图重新组织数据,对数据表进行分块显示。
(4)提供数据安全性。
视图把用户可以使用的数据定义在视图中,这样用户就不能使用视图定义外的其他数据,从而保证了数据安全性。
3、视图的创建、查询、修改、重命名、删除方法有用企业管理器和Transact-SQL语句两种。
对于较熟练的人来说引用Transact-SQL语句创建的方法,优点在于操作时间短,效率高。