第 7 章 视图的操作与管理

21
第 7 第 第第第第第第第第

Upload: adena-chang

Post on 15-Mar-2016

71 views

Category:

Documents


6 download

DESCRIPTION

第 7 章 视图的操作与管理. 视图概述. 视图是个虚表,是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。 使用视图的优点和作用主要有: ( 1 )视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。 ( 2 )视图大大地简化了用户对数据的操作。 ( 3 )视图可以让不同的用户以不同的方式看到不同或者相同的数据集。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章 视图的操作与管理

第 7 章 视图的操作与管理

Page 2: 第 7 章 视图的操作与管理

视图概述 视图是个虚表,是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。 使用视图的优点和作用主要有:( 1 )视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。( 2 )视图大大地简化了用户对数据的操作。( 3 )视图可以让不同的用户以不同的方式看到不同或者相同的数据集。( 4 )在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。而使用视图可以重新组织数据,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。( 5 )视图提供了一个简单而有效的安全机制。

Page 3: 第 7 章 视图的操作与管理

7.1 创建视图 SQL Server 2005 提供了如下几种创建视图的方法:( 1 )用 SQL SERVER 管理平台创建视图;( 2 )用 Transact-SQL 语句中的 CREATE VIEW 命令创建视图;( 3 )利用 SQL SERVER 管理平台的视图模板来创建视图。 创建视图时应该注意以下情况:( 1 )只能在当前数据库中创建视图,在视图中最多只能引用 1024 列,视图中记录的数目限制只由其基表中的记录数决定。( 2 )如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表或者视图。( 3 )如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。( 4 )不能在视图上创建索引,不能在规则、默认、触发器的定义中引用视图。( 5 )当通过视图查询数据时, SQL Server 要检查以确保语句中涉及的所有数据库对象存在,每个数据库对象在语句的上下文中有效,而且数据修改语句不能违反数据完整性规则。( 6 )视图的名称必须遵循标识符的规则,且对每个用户必须是惟一的。此外,该名称不得与该用户拥有的任何表的名称相同。

Page 4: 第 7 章 视图的操作与管理

7.1.1 利用 SQL SERVER 管理平台创建视图 利用 SQL SERVER 管理平台创建视图的具体操作步骤如下:( 1 )在 SQL SERVER 管理平台中,展开指定的服务器,打开要创建视图的数据库文件夹,选择指定的数据库,右击该数据库图标,从弹出的快捷菜单中依次选择“新建( New )→视图”选项,如图 7-1 所示。接着就出现添加表、视图、函数对话框。如图 7-2 所示。

图 7-1 选择新建视图选项对话框 图 7-2   添加表、视图、函数对话框

Page 5: 第 7 章 视图的操作与管理

7.1.1 利用 SQL SERVER 管理平台创建视图 ( 2 )选择好创建视图所需的表、视图、函数后,通过单击字段左边的复选框选择需要的字段,如图 7-3 所示。单击工具栏中的“保存”按钮,或者单击鼠标右键,从快捷菜单中选择保存选项保存视图,输入视图名,即可完成视图的创建。

图 7-3 选择视图字段对话框

Page 6: 第 7 章 视图的操作与管理

7.1.2 利用 Transact-SQL 语句中的 CREATE VIEW 命令创建视图 使用 Transact-SQL 语句中的 CREATE VIEW 创建视图,其语法形式如下:CREATE VIEW [schema_name.] view_name [(column [,...n])] [WITH <view_attribute> [,...n]]AS select_statement [WITH CHECK OPTION] < view_attribute > ::= {ENCRYPTION|SCHEMABINDING|VIEW_METADATA}

Page 7: 第 7 章 视图的操作与管理

7.1.2 利用 Transact-SQL 语句中的 CREATE VIEW 命令创建视图 例 7-1  选择表 s 和 sc 中的部分字段和记录来创建一个视图,并且限制表 s 中的记录只能是计算机系的记录集合,视图定义为 view_s 。程序清单如下:create view view_sas select s.name,s.age,s.sex,sc.cno,sc.score from s,scwhere s.sno=sc.sno and s.dept=’ 计算机’例 7-2  创建一个视图,使之包含复杂的查询。程序清单如下:CREATE VIEW ExampleView WITH SCHEMABINDINGAS SELECT sno, SUM(score) AS Sumscore, COUNT(*) AS CountCol FROM sc GROUP BY sno

Page 8: 第 7 章 视图的操作与管理

7.1.2 利用 Transact-SQL 语句中的 CREATE VIEW 命令创建视图 例 7-3  创建一个视图,使之包含字符串的运算。程序清单如下:CREATE VIEW v_shyjl(shyxh, shj, xm, jglb, phr, bzh) ASSelectdistinct shyxh,substring(shj,1,10)+""+zhi, t01_shbshy.xm,t012_shyjl.jglb,t012_shyjl.phr,t012_shyjl.bzhfrom t01_shbshy, t012_shyjlwhere t012_shyjl.xm=t01_shbshy.xm

其中 shj 列是从基表中取出两列并和一空字符串相加而得到的。这些都为基表中字段间的灵活运算提供了极大方便,从而使我们可以随心所欲地定制符合自己要求的数据。

Page 9: 第 7 章 视图的操作与管理

7.1.3 利用模板创建视图 使用视图模板可以很容易地创建视图,其具体操作步骤如下;( 1 )在 SQL SERVER 管理平台中,选择 view 菜单中的“模板资源管理器 ”选项,如图 7-4 所示。( 2 )在出现的“模板资源管理器”选项中选择“创建视图”选项,如图 7-5 所示。 ( 3 )按照提示输入视图名称, select 语句后,执行此语句,即可创建视图。

图 7-4 选择工具菜单中的向导命令 图 7-5 创建视图模板

Page 10: 第 7 章 视图的操作与管理

7.2 修改、删除和重命名视图 7.2.1 修改视图 7.2.2 重命名视图7.2.3 查看视图信息、删除视图

Page 11: 第 7 章 视图的操作与管理

7.2.1 修改视图 修改视图的方法有以下两种方法: ( 1 )在 SQL SERVER 管理平台中,右击要修改的视图,从弹出的快捷菜单中选择“设计视图”选项,出现视图修改对话框。该对话框与创建视图时的对话框相同,可以按照创建视图的方法修改视图。( 2 )使用 ALTER VIEW 语句修改视图,但首先必须拥有使用视图的权限,然后才能使用 ALTER VIEW 语句,该语句的语法形式如下: ALTER VIEW view_name [ ( column[,...n] ) ] [WITH ENCRYPTION] AS select_statement [WITH CHECK OPTION

Page 12: 第 7 章 视图的操作与管理

7.2.1 修改视图 例 7-4  修改了视图 V_employees ,在该视图中增加了新的字段 employees.salary ,并且定义一个新的字段名称 e_salary 。程序清单如下:alter view dbo.employees ( number,name,age,e_salary )asselect number,name,age,salaryfrom employeeswhere name=’ 张三’

Page 13: 第 7 章 视图的操作与管理

7.2.2 重命名视图 重命名视图方法有以下两种:1. 在 SQL SERVER 管理平台中,选择要修改名称的视图,并右击该视图,从弹出的快捷菜单中选择“重命名”选项。或者在视图上再次单击,也可以修改视图的名称。接着该视图的名称变成可输入状态,可以直接输入新的视图名称。2. 使用系统存储过程 sp_rename 来修改视图的名称,该过程的语法形式如下: sp_rename old_name,new_name例 7-5  把视图 v_all 重命名为 v_part 。程序清单如下: sp_rename v_all,v_part

Page 14: 第 7 章 视图的操作与管理

7.2.3 查看视图信息、删除视图 1. 查看视图信息可以使用系统存储过程 sp_help 显示视图特征,使用 sp_helptext 显示视图在系统表中的定义,使用 sp_depends 显示该视图所依赖的对象。使用 SQL Server 查询分析器可以方便地显示视图属性信息,如图 7-7 所示。图 7-8 显示了使用 sp_helptext 存储过程显示视图的创建语句。

图 7-7 显示视图属性对话框 图 7-8 显示视图创建语句

Page 15: 第 7 章 视图的操作与管理

7.2.3 查看视图信息、删除视图 1. 查看视图信息利用 select 语句或 SQL SERVER 管理平台可以查看视图的输出数据。在 SQL SERVER 管理平台中,右击某个视图的名称,从弹出的快捷菜单中选择“打开视图”选项,在 SQL SERVER 管理平台中就会显示该视图的输出数据,如图 7-9 所示。

图 7-9 视图输出数据窗口

Page 16: 第 7 章 视图的操作与管理

7.2.3 查看视图信息、删除视图 2. 删除视图对于不再使用的视图,可以使用 SQL SERVER 管理平台或者 Transact-SQL 语句中的 DROP VIEW 命令删除它。 使用 Transact-SQL 语句 DROP VIEW 删除视图,其语法形式如下:DROP VIEW {view_name} [,…n]可以使用该命令同时删除多个视图,只需在要删除的各视图名称之间用逗号隔开即可。例 7-6  同时删除视图 v_student 和 v_teacher 。程序清单如下:drop view v_student,v_teacher

Page 17: 第 7 章 视图的操作与管理

7.3 通过视图修改记录 使用视图修改数据时,需要注意以下几点:( 1 )修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。( 2 )不能修改那些通过计算得到的字段,例如包含计算值或者合计函数的字段。( 3 )如果在创建视图时指定了 WITH CHECK OPTION 选项,那么使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。( 4 )执行 UPDATE 、 DELETE 命令时,所删除与更新的数据必须包含在视图的结果集中。( 5 )如果视图引用多个表时,无法用 DELETE 命令删除数据,若使用UPDATE 命令则应与 INSERT 操作一样,被更新的列必须属于同一个表。

Page 18: 第 7 章 视图的操作与管理

7.3.1 插入数据记录 例 7-7  创建一个基于表 employees 的新视图 v_employees 。程序清单如下:create view v_employees ( number, name, age, sex, salary )asselect number, name, age, sex, salary from employeeswhere name=’ 张三’执行以下语句可向表 employees 中添加一条新的数据记录:Insert into v_employeesValues ( 001,’ 李力’ ,22,’m’,2000 )

Page 19: 第 7 章 视图的操作与管理

7.3.1 插入数据记录 例 7-8  首先创建一个包含限制条件的视图 v_employee2 ,限制条件为工资 >2000 ,然后插入了一条不满足限制条件的记录,再用 SELECT 语句检索视图和表。程序清单如下:create view v_employee2asselect * from employeewhere 工资 >2000goinsert into v_employee2values ( 002,’ 王则’ ,30,’f’,1000 )goselect * from employeegoselect * from v_employee2go

Page 20: 第 7 章 视图的操作与管理

7.3.1 插入数据记录 例 7-9  在例子 7-8 的基础上添加 WITH CHECK OPTION 选项。程序清单如下:create view v_employee3asselect * from employeewhere 工资 >2000with check optiongoinsert into v_employee3values ( 002,’ 王则’ ,30,’f’,1000 )goselect * from v_employee3go

运行该程序将显示如下出错信息:Server: Msg 550, Level 16, State

1, Line 1The attempted insert or update fai

led because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint.

The statement has been terminated.

Page 21: 第 7 章 视图的操作与管理

7.3.2 更新和删除数据记录 使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表。使用视图删除记录,可以删除任何基表中的记录,直接利用 DELETE 语句删除记录即可。但应该注意,必须指定在视图中定义过的字段来删除记录。 •例 7-10  创建了一个基于表 employees 的视图 v_employees ,然后通过该视图修改表 employees 中的记录。 程序清单如下: create view v_employees as select * from employees update v_employees set name=’ 张然’ where name=’ 张三’•例 7-11  利用视图 v_employees 删除表 employees 中姓名为张然的记录。 程序清单如下: delete from v_employees where name=’ 张然’