第八章 视图及其应用
?视图概述
?视图的操作
?视图的定义信息查询
?视图的应用举例
第八章 视图及其应用
?视图概述
1、视图的基本概念
视图是一个虚拟表,从一个或多个表中导出(视图也可以从视图
中导出),其内容由查询语句定义生成。从表面上看,视图和真实表
一样,具有结构和数据,包含一系列带有名称的列和行数据。实质上
,表是视图的基础,数据库中只存储了视图定义,而不存放视图所对
应的数据,视图所对应的数据仍存放在视图所引用的基表中。
2,视图的作用
1) 视图可以集中数据,满足不同用户对数据的不同要求。
2) 视图可以简化复杂查询的结构,从而方便用户对数据的操作。
3) 视图能够对数据提供安全保护
4) 便于组织数据导出
第八章 视图及其应用
? 视图操作
?创建视图
?重命名视图
?修改视图
?使用视图
?删除视图
第八章 视图及其应用
?创建视图
创建视图时应该注意以下:
1、创建者必须拥有创建视图的权限,对视图中引用的基表或视图有许可权。
2、只能在当前数据库中创建视图,如果使用分布式查询,视图所引用的基表和
视图可以存在于其他数据库或其他服务器中。
3、在一个视图中最多引用 1024列,视图中记录的行数限制由基表中记录数目决
定。
4、视图的名称必须遵循标识符的定义规则,对于每个用户来说也必须唯一,而
且视图名称不允许与该用户拥有的表重名。
5、视图中列的名称一般继承其基表中列的名称,如果视图中某一列是算术表达
式、函数、常量或者来自多个表的列名相同,必须要为视图中的列定义名称。
6、可以将视图创建在其他视图上,SQL Server 2000中允许 32层的视图嵌套。
7、不能在视图上创建全文索引,不能将规则、默认绑定在视图上。
8、不能在临时表上创建视图,也不能创建临时视图。
9、定义视图的查询语句中不能包含 ORDER BY, COMPUTE,COMPUTE
BY子句和 INTO关键字。
第八章 视图及其应用
?创建视图
1、使用企业管理器创建视图,创建步骤如下:
1)在企业管理器,打开“视图设计器”。
2)单击工具栏上的“添加表”按钮,将表添加到视图设计器中。
3)根据新建视图的需要,从表中选择视图引用的列。
4)在网格窗格中的“准则”栏中设置过滤记录的条件。
5)设置视图的其他属性。
6)在视图设计器窗口中,检查 SQL语法。
7)最后,单击“保存”按钮,为视图指定名称。关闭“视图设计器
”。
第八章 视图及其应用
?创建视图
1、使用企业管理器创建视图,创建图解步骤如下:
“添加”表 选择表列 选择属性
第八章 视图及其应用
?创建视图
1、使用视图向导创建视图图解如下:
第八章 视图及其应用
?创建视图
1、使用视图向导创建视图图解如下:
第八章 视图及其应用
?创建视图
1、使用视图向导创建视图图解如下:
第八章 视图及其应用
?创建视图
语法格式如下:
CREATE VIEW [ < database_name >,] [ < owner >,]
view_name
[ ( columnname [,...n ] ) ]
[ WITH ENCRYPTION]
AS
select_statement
[ WITH CHECK OPTION ]
第八章 视图及其应用
?创建视图
其中
view_name:定义视图的名字。必须遵守命名规则。
columnname:定义视图中列的名字。列名并不是必须定义的,默认
情况下,视图列名会自动沿用表格的列名。但是当遇到以下情况时,
必须为视图提供列名:
1、该列是从表格中的计算列
2、当视图从多个表中产生,而这些表中有数据列重名。
3、当视图中有一个数据列使用了同表格中相应列名不同的时候,
所有列名都必须给出。
select_statement:建立视图使用的 SELECT语句。
WITH CHECK OPTION:对视图进行 UPDATE或 INSERT操作时,
要保证更新或插入的行满足视图中定义的谓词条件。
WITH ENCRYPTION:表示 SQL Server 加密包含 CREATE VIEW
语句文本的系统表列。
第八章 视图及其应用
?创建视图
例,在 STUDENT数据库中,以学生表为基础建立一个视图,其名称
为,V_计算机系学生”,其包含列为学生表中的所有列,筛选记录条
件为“系部代码 = '01'”。程序清单如下:
USE STUDENT
GO
CREATE VIEW V_计算机系学生
AS
SELECT *
FROM 学生
WHERE 系部代码 = '01'
GO
第八章 视图及其应用
?重命名视图
1、使用企业管理器
在企业管理器中,选择需要修改名称的视图,右击该视图,从弹
出的快捷菜单中选择“重命名”选项,或者在视图上再次单击,使视
图名称变为可修改状态,输入新的视图名称即可。名称修改完后,将
会弹出重命名对话框,询问是否重命名,单击“是”按钮完成视图重
命名,单击“查看相关性”按钮,可查看与该视图有关的其他数据库
对象。
2、使用系统存储过程
其语法格式如下,sp_rename old_name,new_name
例:将视图, V_某班成绩”重命名为,V_成绩查询”。程序清单如
下:
sp_rename V_某班成绩,V_成绩查询
第八章 视图及其应用
?修改视图属性
1、使用企业管理器 <对于加密的视图不能通过企业管理器进行修改 >
1)在企业管理器中,选择要修改的视图,然后右击。
2)在弹出的快捷菜单中选择“设计视图”命令,打开视图设计器。
3)在视图设计器中,可以根据需要对视图进行修改,其方法与添加
视图相似。
4)在设计器中对视图内容修改后,单击“保存”按钮,完成视图修
改。
2、使用 ALTER VIEW语句
其语法格式如下:
ALTER VIEW view_name [ ( column [,...n ] ) ]
[ WITH ENCRYPTION ]
AS
select_statement
[ WITH CHECK OPTION ]
<对于加密的与不加密的视图,都可以通过此语句进行修改 >
第八章 视图及其应用
?修改视图属性
例:将上面的,V_系课程计划 _1”视图中的筛选条件变为
“专业代码 =?0102?”。
程序清单如下:
ALTER VIEW V_系课程计划 _1
AS
SELECT 课程,课程名,教学计划,课程类型,教学计划,开课学期,
教学计划,学分
FROM 课程,教学计划
WHERE课程,课程号 =教学计划,课程号 and专业代码 ='0102'
第八章 视图及其应用
?修改视图属性
ALTER VIEW V_计算机系学生
with encryption
AS
SELECT *
FROM 学生
WHERE 系部代码 = ?02?
第八章 视图及其应用
?删除视图
1、使用企业管理器
1)在企业管理器中,选择要删除的视图,右击该视图。
2)从弹出的快捷菜单中选择“删除”命令,或者直接按下键盘上的
Delete键,或者使用工具栏中的“删除”按钮。
3)执行“删除”命令后,弹出“移去对象”对话框中,单击“查看
相关性”按钮,查看与该视图有关的其他数据库对象是否依赖此视图
,决定是否删除视图。如果确认删除视图,则单击“全部除去”按钮

2,使用 DROP VIEW语句
语法格式如下,DROP VIEW { view } [,...n ]
使用该语句可以同时删除多个视图,视图名称之间用逗号分隔即可。
例:删除视图 V_成绩查询。程序清单如下:
USE STUDENT
GO
DROP WIEW V_成绩查询
GO
第八章 视图及其应用
?使用视图
1、通过视图查询数据信息
对于视图,可以象使用基表一样对其进行查询。
例:查询,V_计算机系学生”视图中全体学生的记录。
USE STUDENT
GO
SELECT * FROM V_计算机系学生
GO
例:查询,V_计算机系学生”视图中全体男学生的记录。
USE STUDENT
GO
SELECT *
FROM V_计算机系学生
WHERE 性别 =?男’
GO
第八章 视图及其应用
?使用视图
2、通过视图修改数据
通过视图来修改基表中的数据,包含数据插入、数据删除和数据
修改。由于视图本身不实际存储数据,它只是显示一个或多个基表的
查询结果,修改视图中的数据的实质是在修改视图引用的基表中的数
据,因此,在使用视图修改数据时,要注意下列一些事项:
1)不能在一个语句中对多个基表使用数据修改语句。如果要修改由
两个或两个以上基表得到的视图,必须进行多次修改,每次修改只能
影响一个基表。
2)对于基表中需更新而又不允许空值的所有列,它们的值在
INSERT 语句或 DEFAULT 定义中指定。这将确保基表中所有需要值
的列都可以获取值。
第八章 视图及其应用
?使用视图
2、通过视图修改数据
3)不能修改那些通过计算得到结果的列。
4)在视图定义中使用了 WITH CHECK OPTION 子句,则所有在
视图上执行的数据修改语句都必须符合定义视图的 SELECT 语句中
所设定的条件。
5)在基表的列中修改的数据必须符合对这些列的约束条件,如是否
为空、约束,DEFAULT 定义等。
第八章 视图及其应用
?使用视图
例:向,V_计算机系学生”视图中插入一条新的学生记录。
USE STUDENT
GO
INSERT INTO V_计算机系学生
VALUES('010101001002','李菲 ','女 ?,1980/02/8,1981/02/01,
'010101001?,'01','0101')
GO
例:将,V_计算机系学生”视图中专业代码为,0101“的改为,0102”。
UPDATE V_计算机系学生
SET 专业代码 ='0102'
WHERE 专业代码 ='0101'
GO
例:删除,V_计算机系学生”视图中姓名为“李菲”的同学。
DELETE FROM V_计算机系学生
WHERE 姓名 ='李菲 '
GO
第八章 视图及其应用
?视图定义信息查询
1、使用企业管理器
1)在企业管理器中,选择需要查看定义的视图。
2)双击,V_系课程计划 _1”图标,打开该视图的“属性”对话框

3)在视图的属性对话框中,不仅可以看到视图的定义信息,还可
以根据需要直接修改视图定义,并且通过“检查语法”按钮检验语
句的正确性。
2、使用系统存储过程
系统存储过程 sp_helptext可用来查看视图的定义信息,语法如下:
[EXEC] sp_helptext objname
例:使用 sp_helptext查看视图,V_系课程计划 _1”的定义信息。
USE STUDENT
GO
sp_helptext V_系课程计划 _1
GO