精品创建和管理其他数据库对象题目及答案doc.docx
《精品创建和管理其他数据库对象题目及答案doc.docx》由会员分享,可在线阅读,更多相关《精品创建和管理其他数据库对象题目及答案doc.docx(14页珍藏版)》请在冰豆网上搜索。
精品创建和管理其他数据库对象题目及答案doc
实验:
创建与管理其他数据库对象
一、实验目的
掌握创建管理索引、视图、存储过程和触发器对象的使用方法;
实验环境
已安装SQLServer2005企业版的计算机;
具有局域网环境,有固定IP;
三、实验学时
4学时
四、实验要求
1.掌握索引的创建和管理方法;
2.掌握视图的创建和管理方法;
3.掌握存储过程的创建和管理方法;
4.掌握触发器的创建和管理方法;
5・完成实验报告;
五、实验内容及步骤
请使用T-SQL语句实现进行以下操作:
1•在student表的sno列上创建唯一性聚集索引index.sno
USEstu
GO
CREATEUNIQUECLUSTEREDINDEXindex_sno
ONstudent(sno)
禺消息
I命令已成功完成.
紛查询已成功执行。
2.在student表的sname列上创建唯一性非聚集索引index.sname
USEstu
GO
CREATEUNIQUENONCLUSTEREDINDEXindex_sname
ONstudent(sname)
3.在student表的sage列上创建非聚集索引index-sage
USEstu
GO
CREATENONCLUSTEREDINDEXindex_sage
ONstudent(sage)
4.在sc表的sno列和eno列上创建复合非聚集索引index.sno-cno
USEstu
GO
CREATENONCLUSTEREDINDEXindex_sno_cno
ONsc(sno,eno)
GO
5•将索引index-o更名为index^snocno
USEstu
GO
EXECsp_rename'sc•index_sno_cno1,1index_snocno1,*index
6•删除上面的索引index-snocno
USEstu
GO
DROPindexindex_snocno
ONsc
7.查看student表的索引基本信息
USEstu
GO
EXECsp_helpindexstudent
GO
>—
13结果肉消息
index_name
index_descnption
jndex.keys
1
]index^sage
|nonclusteredlocatedonPRIfvIARY
sage
2
index_sname
nonclustered.uniquelocatedonPRIMARY
sno
3
index_sno
clustered,uniquelocatedonPRIMARY
sno
(Q查询已成功执行。
JSJ-PC29(9.0RTM)JSJ-PC29\Administrator(52)
8.创建一个只选修8号课程的学生情况的视图信息
USEstu
GO
CREATEVIEWstu_8
AS
SELECTstudent.snozstudent.snamezsage^ssex
fromstudent,sc
Wherestudent.sno=sc・snoANDcno=8
9•创建一个视图view_stu,只包含学生的学号,姓名,年龄信息
USEstu
GO
CREATEVIEWview_stu
AS
SELECTsnozsname,sage
Fromstudent
10.在上一题视图的基础上创建年龄在20岁以上的的学生的视图
USEstu
GO
SELECTsno,sname,sage
Fromview_stu
wheresage>20
I、)1.
n结果
JI消息
sno
sname
sage
1
200515001
赵菁菁
23
2
200515008
王民生
25
3
200515010
李晨
22
4
200515014
张丰毅
22
5
200515015
李蕾
21
6
200515016
刘社
21
—
200515020
马翔
21
8
200515021
刘峰
25
9
200515022
牛站强
22
10
200515025
朱小欧
30
©查询已成功执行.JSJ-PC29(9.0RTM)
11.创建一个包含不及格同学及90分以上同学的学号、姓名、课程名称及成绩的视图
USEstu
GO
SELECTstudent・sno,student・sname,cname,grade
Fromstudent,sc,course
wherestudent.sno=sc.snoANDsc.cno=course.enoAND(grade>90ORgrade<60)
sno
sname
cname
grade
1
200515001
赵菁菁
数据结构
58
2
200515002
李勇
信息系统
53
3
200515004
张衡
数学
46
4
200515005
张向东
数据库
58
5
200515010
李晨
数学
96
6
200515015
李蕾
大学英语
0
/
200515018
李贯
大学英语
58
8
200515021
刘峰
数据处理
58
9
200515021
刘峰
计算机网络
54
©查询己成功执行。
JSJ-PC29(9.0RTM)
JSJ*PC29\Administr
12.选择一个上面创建的视图,查看视图的信息
USEstu
GO
SELECTsno,sname,sage
FROMviewstu
sno
sname
sage
1
200515001
赵菁菁
23
2
200515002
李勇
20
J_
200515003
张力
19
4
200515004
张衡
18
5
200515005
张向东
20
6
200515006
张向丽
20
—
200515007
王芳
20
8
200515008
王民生
25
9
200515009
王小民
18
10
200515010
李晨
22
11
200515011
张毅
20
12
200515012
杨磊
20
13
200515013
李晨
19
14
200515014
张丰毅
22
15
200515015
李蕾
21
16
200515016
刘社
21
17
200515017
刘星耀
18
18
200515018
李贲
19
19
200515019
林自许
20
Q
200515020
马翔
21
21一
200515021
刘峰
25
22_
200515022
牛站强
22
23
200515023
李婷婷
18
24
200515024
严丽
20
25
200515025
朱小欧
30
©查询已成功执行.
JSJ-PC29(9.0RTM)
JSJ-PC29\Admin
13.选择一个上面创建的视图,修改删除其中的一列
USEstu
GO
EXECsp_renamefview_stu.sno1,1view_stu・口刖$110',1COLUMN遐消息
警告:
更改对象名的任一部分都可能会破坏脚本和存储过程。
14.选择一个上面创建的视图进行删除操作
USEstu
GO
DROPVIEWstu_8
15.从视图view_stu中查询19岁的男生记录
USEstu
GO
USEstu
GO
SELECT1view_stu•newsno1AS1snof,student.sname,student.sage
FROMview_stu,student
WHERE1view_stu.newsno1=student.snoANDstudent.sage=19ANDssex=‘男'
16.通过视图view.stu中插入一行数据。
学号:
2006010010,姓名:
赵青,年龄:
USEstu
GO
Insertintoview_stu
Values(^OOGOIOIO1,■赵青J1*)
17•将视图view.stu中姓名为“李蕾”的年龄改为“22”
USEstu
GO
UPDATEview_stu
SETsage=*22*
WHEREszme」李蕾'
18.通过视图view.stu将姓名为“李贵”的记录删除
USEstu
GO
DELETE
FROMview_stu
WHERES2me=‘李贵'
19.自行选择上面创建的一个视图插入一个记录。
USEstu
GO
Insertintoview_stu
ValuesC2006010ir;^贵;70')
20.自行选择一个视图根据一定的条件进行查询。
USEstu
GO
SELECT*
Fromview_stu
WHEREsage>=20
view_stu.newsno
sname
sage
1
2{}0515(X)1
赵菁菁
23
2_
200515002
李勇
20
3_
200515005
张向东
20
4
200515006
张向丽
20
5_
200515007
王芳
20
6
200515008
王民生
25
7
200515010
李晨
22
8_
200515011
张毅
20
9_
200515012
杨磊
20
10
200515014
张丰毅
22
11
200515015
李蕾
22
12
200515016
刘社
21
13
200515019
林自许
20
14
200515020
马翔
21
15
200515021
刘峰
25
16
200515022
牛站强
22
17
200515024
严丽
20
18
200515025
朱小欧
30
19
200601011
赵贲
20
出哇週勒功执行^巴strat0厂二54
21.自行选择联合一张表和某个视图进行复合查询。
USEstu
GO
SELECT*
Fromview_stuzsc
WHERE1view_stu.newsno1-sno
22.创建存储过程返回全部男生选课及成绩等相关信息
USEstu
GO
CREATEPROCEDUREstu_info
AS
SELECTDISTINCTa.sno,sname,eno,grade
FROMstudenta,sc
WHEREa.sno=sc・snoANDssex=,男'
EXECstuinfo
sno
sname
C...
grade
1
2站5002
李勇
1
85
2_
200515002
李勇
3
53
3_
200515002
李勇
4
85
4
200515003
张力
1
86
5_
200515004
张衡
174
6_
200515004
张衡
2
46
7
200515005
张向东
1
58
8_
200515005
张向东
10
65
9
200515005
张向东
2
89
10
200515008
王民生
2
72
11
200515016
刘社
8
NULL
12
200515017
刘星耀
8
NULL
13
200515021
刘峰
6
58
◎查询已成功执行。
JSJ-PC29(9.0RTM)JSJ-PC29Ud/ninistrator
23.创建一个带输入参数的存储过程,能够根据参数向学生表中插入一条记录
USEstu
GO
CREATEPROCEDUREstudent_insert(@snochar(9),Gsnamechar(8),@ssex
char
(2)r@sageint,Gsdeptchar(4))
AS
INSERTINTOstudent(sno,sname,ssex,sage,sdept)
VALUES(@sno,@snamez@ssexr@sagez@sdept)
EXECstudent_insert(1200666666','萧萧','男\*20','CS')
24.创建一个带输入参数的存储过程,根据不同的学生名参数,返回该学生的所有课程成绩。
USEstu
GO
CREATEPROCEDUREstu_scl(@yxchar(6))
ASSELECTDISTINCTa.sno,sname,eno,grade
FROMstudenta,sc
WHEREa-sno=sc.snoandsname=@yx
GO
Execstu_scl1张力'
L<||1
□结果
j消息
sno
sname
eno
grade
1
200515003
张力
1
86
◎查询已成功执行-JSJ
25.创建一个带输入输出参数的存储过程,根据输入的系部名,统计该系学生的
平均成绩并输出。
USEstu
GO
CREATEPROCEDUREAVERAGE2
@stu_sdeptvarchar(8),^averageintOUTPUT
AS
SELECT@average-avg(grade)
FROMstudentzsc
WHEREstudent.sno=sc・snoANDsdeptstu_sdept
GO
DECLARE@Gint
EXECAVERAGE2'CSJ@GOUTPUT
SELECT@G
26.查看第22和23题的存储过程的有关信息,并查看它们的定义。
修改第22题的存储过程,改为查询全部女生的资料。
删除第23题的存储过程。
USEstu
GO
ALTERPROCEDUREstu_info
AS
SELECTDISTINCTa.sno,sname,eno,grade
FROMstudenta,sc
WHEREa.sno^sc・snoANDssex二'女'
EXECstu_info
GO
DROPPROCEDUREstudent_insert
27•创建student表的DELETE触发器,当一个学生退学后,信息从student表中删除,触发在sc表中删除该生选课情况。
USEstu
GO
28•创建一个触发器,检查在sc表中输入一门课程成绩,必须符合在0到100分范围内。
USEstu
GO