西北工业大学数据库实验报告记录4.docx
- 文档编号:5047083
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:8
- 大小:145.91KB
西北工业大学数据库实验报告记录4.docx
《西北工业大学数据库实验报告记录4.docx》由会员分享,可在线阅读,更多相关《西北工业大学数据库实验报告记录4.docx(8页珍藏版)》请在冰豆网上搜索。
西北工业大学数据库实验报告记录4
西北工业大学数据库实验报告记录4
————————————————————————————————作者:
————————————————————————————————日期:
《数据库原理》实验报告
题目:
实验四:
视图与索引
学号
姓名
班级
日期
2014302692
孟玉军
10011402
16.10.18
1.实验内容、步骤以及结果
1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。
(5分)
2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:
V_SPJ)(10分,每种方法5分)。
1).
createviewv_spj
as
selectsno,pno,qty
fromJ,SPJ
wherej.jno=spj.jnoandjname='三建'
2).
createviewview_2
as
selectsno,pno,qty
fromSPJ
wherejno=(selectjnofromj
wherejname='三建')
3.用SQL语句完成第五版教材第三章第9题中的视图查询(10分,每小题5分)。
1).
selectpno,sum(qty)assum_qty
fromv_spj
groupbypno
结果:
2).
selectpno,qty
fromv_spj
wheresno='S1'
4.用SQL语句完成视图的数据更新。
(15分,每题5分)
(1)给视图V_SPJ中增加一条数据。
提示:
-SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO为NULL,所以视图中没有该条数据。
-SPJ表中JNO不能为空时,可以使用insteadof触发器实现。
1:
jno允许为空时:
insert
intov_spj
values('S4','P3',100)
结果改变:
select*fromv_spj
没有出现刚刚插入的那条数据
2:
jno不能为空时:
Jno不能为NULL
设立触发器:
createtriggerinstead_of_insertonv_spj
insteadofinsert
as
begin
declare@snochar(10)
declare@pnochar(10)
declare@qtyint
select@sno=sno,@pno=pno,@qty=qty
frominserted
insertintoSPJvalues(@sno,@pno,'J1',@qty)
end
执行语句:
insertintov_spj
values('S5','P4',100)
结果:
(2)修改视图V_SPJ中的任意一条数据的供应数量。
updatev_spj
setqty=300
wheresno='S1'andpno='P1'
修改前:
修改后:
(3)删除视图V_SPJ中的任意一条数据(注意所创建视图可以视图消解时,才能正常删除,否则会删除失败;也可以考虑用insteadof触发器实现)。
创建insteadof触发器:
createtriggerinstead_of_delete
onv_spj
insteadofdelete
as
begin
declare@snochar(10)
declare@pnochar(10)
declare@qtyint
select@sno=sno,@pno=pno,@qty=qty
fromdeleted
deleteSPJwheresno=@snoandpno=@pnoandjno='J1'andqty=@qty
end
删除前:
删除第一条数据:
deletefromv_spj
wheresno='S1'andpno='P1'
5.用图形用户界面对Student数据库中C表的Cno字段创建一个降序排列的唯一索引,索引名称IX_CNo。
(5分)
6.使用SQL语句对Student数据库完成以下的索引操作。
(15分,每题5分)
(1)在C表的CName属性上创建一个非唯一性的聚簇索引,索引名IX_CName。
(提示:
创建这个聚簇索引之前,需要首先删除C表的主键约束。
SQLServer中,给某张表指定主键时,会自动创建为主属性一个聚簇索引。
)
先删除原主键:
altertableC
dropconstraintpk_cno
createclusteredindexIX_CnameonC(cname)
(2)在SC表上创建一个名为IX_Cnosno的非聚簇复合索引,该索引是针对sno,cno属性集建立的升序索引。
createnonclusteredindexIX_cnosnoonSC(cnoasc,snoasc)
(3)删除C表的索引IX_CName。
dropindexC.IX_Cname
7.自己设计一个实验验证索引对数据库查询效率的提升作用。
(40分)
(提示:
需要数据量比较大的情况下才容易进行对比)
1).利用随机数生成8585个数据来进行查询
2)未建立索引之前:
查询选修了1课程的学生的学号和成绩:
selectsno,grade
fromSC
wherecno='1'
此时可以通过建立索引来减少查询开销
3).建立索引
GO
CREATENONCLUSTEREDINDEX[
ON[dbo].[SC]([cno])
INCLUDE([sno],[grade])
GO
再进行查询:
2.实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等。
通过创建合适的索引,可以令问题简单化,减少查询开支,加快查询速度
批阅者:
批阅日期:
实验成绩:
批注:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西北工业大学 数据库 实验 报告 记录