实验六 视图和索引 实验指导
一、视图
视图是SQL Server中重要的数据库对象。视图常用于集中、简化和定制显示数据库的数据信息,为用户从多种角度观察数据库中的数据提方便。为了屏蔽数据的复杂性、简化用户对数据的操作、控制用户访问数据的权限、保护数据安全,常为不同的用户创建不同的视图。
1. 视图的基本概念
视图是从一个或多个表或视图导出的表;其结构和数据是建立在对表的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行。但就本质而言,这些数据列和数据行来源于其所引用的表。所以,视图不是真实存在的基础表,而是一张虚表。视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。 视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份。通过视图看到的数据,只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
可以将任何符合视图创建规定的SELCT语句命名和存储为视图。在视图中北查询的表称为基表。
视图的常见实例如下。
? 一个基表的行或列的于集。 ? 两个或多个表的合并。 ? 两个或多个表的联接。 ? 一个基表的统计总汇。 ? 另外一个视图的子集。 ? 视图和基表的混合。 2. 创建视图
在SQL Server2008中创建视图,创建者必须拥有创建视图的权限,并且对视图中引用的基表或视图有许可权。此外,创建视图前还应该注意以下几点:
? 只能在当前数据库中创建视图。如果使用分布式查询,视图所引用的基表和视图可
以存在于其他数据库或其他服务器中。
? 在一个视图中最多引用1024列,视图中记录的行数限制由基表中的记录数目决定。 ? 视图的名称必须遵循标识符的命名规则,且对每个架构都必须唯一,并且该名称不
得与该架构包含的任何表的名称相同。
? 视图中列的名称一般继承其基表中列的名称,如果视图中某―列是算术表达式、函
数、常量或者来自多个表的列名相同,必须要为视图中的列定义名称。 ? 可以将视图创建在其他视图上,SQL Server2008中允许32层的视图嵌套。
1
? 不能在视图上创建全文索引,不能将规则、畎认绑定在视图上。 ? 不能在临时表上创建视图,也不能创建临时视图。
? 定义视图的查询语句中不能包含ORDER BY、COMPUTE、COMPUTE BY子句和
INTO关键字。 (1)使用SSMS创建视图
例如,在studentdb数据库中,建立一个计算机系学生选课的视图,其操作步骤如下: ①启动SQL Server Managemnet Studio,在“对象资源管理器”中,依次展开“数据库”、“Studentdb”节点。
②右击“视图”节点,在弹出的快捷菜单中单击“新建视图”命令,如图1所示,打开如图2所示的“视图设计器”窗口和“添加表”窗口。
图1 “新建视图”命令
2
图2 “视图设计器”窗口和“添加表”对话框
③在“添加表”对话框中选择建立新视图的基表、视图和函数。选择“student”、“sc”两个表,单击“添加”按钮(这里可以选择一张表单击一次添加,也可以按住【ctrl】键将需要的表选择好后,单击“添加”按钮),将表添加到“视图设计器窗口”中。添加完毕后,关闭“添加表”对话框,回到如图3所示的“视图设计器”窗口。如果关闭“添加表”对话框后,仍需要添加表,单击“视图设计器”窗口中的工具栏上的打开“添加表”对话框。
④这时,所选的表出现在“视图设计器”窗口的关系窗格中。根据新建视图的需要,从表中选择视图引用的列。将列加入视图有如下三种方式,可以在关系图窗格中,勾选相应表的相应列左边的复选框来完成;也可以通过选择条件窗格中的“列”栏上的列名来完成,还可以在SQL窗格中输入SELECT语句来选择视图需要的列。在此,依次勾选“student”表中的“sno”、“sname”、“sdept”和“sc”表中的“cno”、“Grade”列,其结果如图3所示。
⑤在条件窗格中的“筛选器”栏中设置过滤记录的条件。本例中需要的条件为“sdept= 'CS'”。
“添加表”按钮,即可
⑥设置完毕后,在“视图设计器”窗口中,单击工具栏中的检查SQL语法。语法正确后,单击的结果窗格所示。
“验证SQL”语法按钮,
“执行SQL”按钮,预览视图返回的结果,如图3中
3