1. 使用视图插入表数据
例:通过视图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。 实验报告要求: ? ? ? ? ?
实验目的 实验内容及步骤 实验习题的源程序清单
写出在实验过程中遇到的问题及解决方法 要求字迹端正、条理清晰、概念正确
25
实 验 六
实验名称:索引的创建和使用 实验学时:2
实验目的:
1) 了解索引的概念、优点及分类
2) 掌握在企业管理器中创建、修改和删除索引的操作。 3) 掌握使用T-SQL语句创建、修改和删除索引的操作。 实验内容及步骤:
(一) 索引的概念:
数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。
索引的优点:
? ? ? ?
可以大大加快数据检索速度。
通过创建唯一索引,可以保证数据记录的唯一性。 在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。
使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
? 可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。 索引的分类:
1.聚集索引和非聚集索引 2.复合索引
3.唯一索引 (二) 在企业管理器中创建索引
在企业管理器中,展开指定的服务器和数据库,右击要创建索引的表,从弹出的快捷菜单中依次选择“所有任务|管理索引”选项。在出现的管理索引对话框中,可以选择要处理的数据库和表,然后单击“新建”按钮,出现“新建索引”对话框。在“索引名称”文本框中输入新建索引的名称,在下面的复选框中选择用于创建索引的字段。可以设定索引的属性,例如是否聚集、是否唯一,还可以建立复合索引,指定填充度属性,在选中字段后,可设置“排序次序”属性。最后单击“确定”按钮,即可生成新的索引。 (三) 使用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字段。
26
Use student
Create index i_s on s(sex,birthday) (四) 使用企业管理器查看、修改和删除索引的操作
在企业管理器中,展开指定的服务器和数据库,右击要创建索引的表,从弹出的快捷菜单中依次选择“所有任务|管理索引”选项,在出现的管理索引对话框中,选择要查看或修改的索引,单击“编辑”按钮,出现“编辑现有索引”对话框。在该对话框中,可以修改索引的大部分设置,还可以直接修改其SQL脚本,只需单击“编辑SQL”按钮,即可出现“编辑Transact_SQl脚本”对话框,在此可以编辑、分析、执行索引的Transact_SQl脚本。
要在企业管理器中修改索引的名称,需要在表的“属性”对话框中进行。在企业管理器中,右击要修改名称的表,从弹出的快捷菜单中选择“设计表”选项,在打开的设计表的窗口中,打开表的“属性”对话框,选择“索引/键”选项卡,在此对话框中,先选定要修改索引名称的索引,然后直接在“索引名”文本框中输入心得索引名称替换原来的索引名称。 要删除索引,可以在“管理索引”对话框中或表的“属性”对话框中,选择要删除的索引,单击“删除”按钮,即可删除索引。
(五) 使用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,以课程名升序。如果不能执行,请分析
说明原因。 实验报告要求: ? ? ? ? ?
实验目的 实验内容及步骤 实验习题的源程序清单
写出在实验过程中遇到的问题及解决方法 要求字迹端正、条理清晰、概念正确
27
实 验 七
实验名称:存储过程的创建和使用 实验学时:4
实验目的:
1) 了解存储过程的概念
2) 了解使用存储过程的特点及用途 3) 掌握创建存储过程的方法 4) 掌握执行存储过程的方法
5) 了解查看、修改和删除存储过程的方法 实验内容及步骤:
(一) 存储过程的概念
SQL Server的存储过程类似于编程语言中的过程。在使用Transact-SQL语言编程的过程中,我们可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并由SQL Server服务器通过过程名来调用它们,这些过程就叫做存储过程。
存储过程在创建时就被编译和优化,调用一次以后,相关信息就保存在内存中,下次调用时可以直接执行。
(二) 存储过程的优点及分类
存储过程的优点 :
? 实现了模块化编程。
? 存储过程具有对数据库立即访问的功能。
? ? ?
使用存储过程可以加快程序的运行速度。 使用存储过程可以减少网络流量。
使用存储过程可以提高数据库的安全性。
存储过程的分类
? 系统存储过程 :系统自动创建,主要存储在master数据库中,一般以sp_为前缀。
?
用户自定义存储过程 :由用户创建并能完成某一特定功能的存储过程。
(三) 创建存储过程的方法
? 使用企业管理器创建存储过程:
在SQL Server企业管理器中,选择指定的服务器和数据库,右击要创建存储过程的数据库,在弹出的快捷菜单中依次选择“新建|存储过程?”选项。在弹出的“新建存储过程”对话框中的文本框中输入创建存储过程的T-SQL语句。
例1:创建一个名为StuInfo的存储过程,完成的功能是在s表中查询200501班的学生的学号、姓名、性别、出生日期的内容。输入代码如下:
CREATE PROCEDURE StuInfo AS
SELECT SNO AS 学号, SNAME AS 姓名, SSEX AS 性别, SAGE AS 年龄 FROM S
WHERE LEFT(SNO,6)=’200501’
输入完毕单击“检查语法”按钮,进行语法检查,检查成功,系统弹出提示信息框,单击“确定”,保存该存储过程,并关闭该对话框。 ? 使用 T-SQL创建存储过程
28
使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。语法如下: CREATE PROC[EDURE] procedure-name[;number] [{@parameter data_type}
[varying][=default][outpur] ][,?n]
WITH
{RECOMPILE│ENCRYPTION│RECOMPILE,ENCRYPTION}] [FOR REPLICATION]AS sql_statement [?n] 说明:
procedure-name:存储过程的名称,必须唯一且符合标识符命名规则。
@parameter:过程中的参数,在CREATE PROCEDURE语句中可以申明一个或多个参数。 data_type:用于指定参数的数据类型。
AS:用于指定该存储过程要执行的操作。
例2:创建存储过程StuScoreInfo,完成的功能是在表s,c和sc中查询以下字段:班级、学号、姓名、性别、课程名称、考试分数。 程序清单:
打开student数据库 use student
--查询是否已存在此存储过程,如果存在,就删除它 if exists (select name from sysobjects
where name =’StuScoreInfo’ and type= ‘P’)
drop procedure StuScoreInfo go
--创建存储过程
creat proceure StuScoreInfo
as
select 班级=substring(s.sno,1,len(s.sno)-2), s.sno as 学号, sname as 姓名, sex as 性别,
c.cname as 课程名称, sc.score as 考试分数
from s,c,sc
where s.sno=sc.sno and c.cno=sc.cno
例3:创建一个带有参数的存储过程stu_info,该存储过程根据传入的学生编号,在t_student中查询此学生的信息。 程序清单:
--删除已存在的存储过程
use student
if exists (select name from sysobjects where name = ‘stu_info’ and type =’P’) drop procedure stu_info go
29