实 验 五
实验名称:视图的创建和使用 实验学时:4 实验目的:
1) 了解视图和数据表之间的主要区别
2) 掌握在SQL Server Management Studio 中创建视图的方法。 3) 掌握使用T-SQL语句创建视图的方法。 4) 掌握查看视图修改数据表的方法。 实验内容及步骤:
(一) 在SQL Server Management Studio 中创建视图
①打开SQL Server Management Studio 窗口,打开新建视图对话框。
方法一:在SQL Server Management Studio 左边的“树”选项卡中选择指定的SQL SERVER组,展开指定的服务器,打开要创建视图的数据库文件夹,选中指定的数据库,右击该数据库图标,从弹出的快捷菜单中依次选择“新建”|“视图”选项,打开新建视图对话框。 方法二:在数据库文件夹中,用鼠标右击下一层的“视图”选项,在弹出的快捷菜单中选择“新建视图”选项。
②在新建视图对话框中,右击窗口上部的空白部分,从弹出的快捷菜单中选择“添加表”选项,或者单击工具栏中的按钮,出现“添加表”对话框,在该框中可以选择需要添加的基本表,单击“添加”按钮,就可以添加进去;也可以某个表名来添加表。使用同样的方法可以切换到“视图”或“函数”选项卡,从中选择需要的视图或函数,并依次创建新的视图。
③这里利用Ctrl键和鼠标配合,同时选前面建立的3个表S,SC,C,并单击“添加”按钮,即可将这3个表添加到创建视图对话框中。然后通过单击字段左边的复选框选择需要的字段,这里选择s表中sno,sname,C表中cno,SC表中sno,cno,属性设置如下:
△选中“输出”复选框,可以在输出结果中显示该字段。
△在“筛选器”文本框中输入限制条件,可以限制输出的记录。在定义视图的查询语句中该限制条件对应WHERE子句。
④在视图属性对话框。该对话框中,“distinct值”可以选择不输出重复的记录,选中“顶端”复选框可以限制视图最多输出的记录条数。
⑤要运行并输出该视图结果,可以在视图设计窗口中单击工具栏中“!”按钮,或右击窗口空白区,在弹出的快捷菜单中选择“运行”选项,则可根据设置的查询语句,在本窗口最下面的数据结果区显示出生成的视图内容。
⑥可以单击工具栏中的“保存”按钮保存视图。 (二) 使用T-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 }
例1:建立显示年龄大于20岁的学生学号、姓名、性别等信息的V_S
20
create view V_S as
select sno,sname,sex from s where age>20
例2:创建v_score1,要求基本表来源:S,C,SC;选择的字段为:S表中的sno、sname;C表中的cname及SC表中score;要求查询的数据为学号为20030001的学生的考试成绩。 Use s
create view v_grade As
Select s.sno,s.sname,c.cname,sc.grade From s,c,sc
Where s.sno=sc.sno and c.cno=sc.cno and sno=“20030001”
在T-SQL中执行上面的程序,会生成视图v_score1。为了查看视图中的数据,在T-SQL中输入语句:select * from v_score1。
(三) 使用SQL Server Management Studio 查看视图信息
在SQL Server Management Studio 左边的“树”选项卡中选择指定的SQL SERVER组,展开指定的服务器,打开要查看视图的数据库文件夹,选择数据库文件夹下的“视图”目录,在右边窗格中回列出当前数据库中的所有视图。
① 若要查看视图的基本信息,右键单击要查看的视图,在弹出的快捷菜单中选择“属性”
选项,打开视图属性对话框;
② 若要查看视图的相关性信息,右键单击要查看的视图,在弹出的快捷菜单中选择“查
看依赖关系”选项,打开“对象依赖关系”对话框。
③ 若要查看视图的输出数据,可以在SQL Server Management Studio 中,右键单击要
查看的视图,在弹出的快捷菜单中依次选择“打开视图”,在SQL Server Management Studio 中就会显示该视图的输出数据。 (四) 使用T-SQL语句查看视图信息
? sp_help 数据库对象名称
报告有关数据库对象(sysobjects 表中列出的任何对象)、用户定义数据类型或 Microsoft? SQL Server? 所提供的数据类型的信息 ? sp_helptext 视图(触发器、存储过程)
显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。 ? sp_depends 数据库对象名称
显示有关数据库对象相关性的信息(例如,依赖表或视图的视图和过程,以及视图或过程所依赖的表和视图)
(五) 使用SQL Server Management Studio 删除视图
在SQL Server Management Studio 打开要查看视图的数据库文件夹,选择数据库文件夹下的“视图”目录,,右键单击要删除的视图,在快捷菜单中选择“删除”命令,打开“出去对象”对话框
(六) 使用T-SQL语句删除视图
DROP VIEW {view_name} [,?n] 删除视图时,将从sysobjects、syscolumns、syscomments、sysdepends和sysprotects系统表中删除视图的定义及其他有关视图的信息。还将删除视图的所有权限。已删除的表上的任何视图必须通过使用DROP VIEW显示删除 (七) 使用视图
1. 使用视图插入表数据
21
例:通过视图v_s向学生表插入一行数据 Insert into v_s
Values (‘20050009’,’李华’,19,‘男’) 2. 使用视图修改表数据
例:update v_s
Set sex=’女’
Where sno=’20040001’
3. 使用视图删除表数据 例:delete v_s
Where sno=’20040001’
实验习题:
对于SQL Server 2000中的pubs数据库,完成如下操作:
(1) 创建视图view1,该视图中包含居住在加利福尼亚州(state字段值为“CA”)的作
者及图书信息,即包含pubs数据库的titles表、authors表中的作者姓、名、书名、电话和地址(视图中的列名全部使用中文)。 (2) 显示第1题创建的仕途view1的所有数据。
(3) 列出第1题视图中所有作者姓或作者名以‘M’字母开头的所有信息。
(4) 修改第1题创建的视图,使其只包含所有作者的姓、名和书名三列(列名全部用中
文)。
(5) 删除以上创建的视图view1。 实验报告要求: ? 实验目的 ? 实验内容及步骤 ? 实验习题的源程序清单
? 写出在实验过程中遇到的问题及解决方法 ? 要求字迹端正、条理清晰、概念正确
22
实 验 六
实验名称:索引的创建和使用 实验学时:2 实验目的:
1) 了解索引的概念、优点及分类
2) 掌握在SQL Server Management Studio 中创建、修改和删除索引的操作。 3) 掌握使用T-SQL语句创建、修改和删除索引的操作。 实验内容及步骤: (一) 索引的概念:
数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。
索引的优点:
? 可以大大加快数据检索速度。
? 通过创建唯一索引,可以保证数据记录的唯一性。 ? 在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排
序的时间。
? 使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
? 可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。 索引的分类:
1.聚集索引和非聚集索引 2.复合索引 3.唯一索引 (二) 在SQL Server Management Studio 中创建索引
在SQL Server Management Studio 中,展开指定的服务器、数据库和要创建索引的表。右键单击“索引”,然后单击“新建索引”,出现“新建索引”对话框。在“索引名称”文本框中输入新建索引的名称,在下面的下拉列表框中可以设定索引的类型,例如是否聚集,在复选框中可设定是否唯一。在索引键列中可添加要设定索引的属性,可设置“排序次序”属性,还可以建立复合索引,最后单击“确定”按钮,即可生成新的索引。 (三) 使用T-SQL语句创建索引
语法:CREATE [UNIQUE] [CLUSTERED│NONCLUSTERED]INDEX index_name ON {table│view} (column [ASC│DESC] [,?n]) 例1:为表jbxx创建一个非聚集索引,索引字段为employee_name,索引名为i_employeename create index i_employeename on jbxx(employee_name)
例2:新建一个表,名称为temp,为此表创建一个惟一聚集索引,索引字段为temp_number,索引名为i_temp_number。 use student
Create table t_temp (temp_number int, temp_name char(10), temp_age int)
create unique clustered index i_temp_number
on t_temp(temp_number)
例3:为表s创建一个复合索引,使用sex和birthday字段。 Use student
23
Create index i_s on s(sex,birthday) (四) 使用SQL Server Management Studio 查看、修改和删除索引的操作
在SQL Server Management Studio 中,展开指定的服务器、数据库和要创建索引的表。右键单击要修改的索引,然后单击“属性”,在出现的“索引属性”对话框中,可以修改索引的大部分设置。
要在SQL Server Management Studio 中修改索引的名称,右键单击要修改的索引,然后单击“重命名”,然后直接在“索引名”文本框中输入新的索引名称替换原来的索引名称。
要删除索引,右键单击要删除的索引,,单击“删除”按钮,即可删除索引。 (五) 使用T_SQL查看、修改和删除索引的操作
使用系统存储过程查看索引信息,语法如下: sp_helpindex [@objname=] ‘name’ 例1:查看jbxx表的索引信息 sp_helpindex jbxx
使用系统存储过程修改索引名称,语法如下:
sp_rename[@objname=] ‘object_name’,[@newname=] ‘new_name’ [,[@objtype=] ‘object_type’]
例2:将s表中的索引i_s的名称改为i_s_sexandbirth use student
sp_rename ‘s.i_s’,’i_s_ sexandbirth’,’index’
删除索引句法:
drop index ‘table.index│view.index’[,?n] 例3:删除表s中的索引i_s_sexandbirth drop index s. i_s_sexandbirth 实验习题:
(1) 为学生表创建一个复合索引i_sdept_sno,以院系升序、学号降序。 (2) 查看表s中的索引信息。
(3) 将索引i_sdept_sno的名称改为i_s。 (4) 删除索引i_s。
(5) 为课程表创建一个唯一聚集索引i_cname,以课程名升序。如果不能执行,请分析
说明原因。
实验报告要求: ? 实验目的 ? 实验内容及步骤 ? 实验习题的源程序清单
? 写出在实验过程中遇到的问题及解决方法 ? 要求字迹端正、条理清晰、概念正确
24