数据库实验报告4.docx
- 文档编号:11469879
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:14
- 大小:515.32KB
数据库实验报告4.docx
《数据库实验报告4.docx》由会员分享,可在线阅读,更多相关《数据库实验报告4.docx(14页珍藏版)》请在冰豆网上搜索。
数据库实验报告4
数据库实验报告4
《数据库原理》实验报告
题目:
实验四
视图与索引
学号
姓名
班级
日期
Xxxx
Xx
xxxxx
2016.10.20
1.实验内容、步骤以及结果
1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1986年出生的学生的视图,视图中包括学号,性别,成绩三个信息。
2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:
V_SPJ)
方法一:
createviewV_SP
as
selectsno,pno,qty
fromspj
wherespj.jnoin
(selectjnofromjwherej.jname='三建')
方法二:
createviewV_SPJ
as
selectsno,pno,qtyfromspj,j
wherej.jno=spj.jnoandj.jname='三建'
3.用SQL语句完成第五版教材第三章第11题中的视图查询
(1)找出三建工程项目使用的各种零件代码及其数量。
SELECTPNO,QTYFROMV_SP
(2)找出供应商S1的供应情况。
SELECT*
FROMV_SPJWHERESNO='S1'
4.用SQL语句完成视图的数据更新。
(1)给视图V_SPJ中增加一条数据。
INSERT
INTOV_SPJ(SNO,PNO,QTY)
VALUES('s5','p3',900)
提示:
-SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO为NULL,所以视图中没有该条数据。
-SPJ表中JNO不能为空时,可以使用insteadof触发器实现。
(2)修改视图V_SPJ中的任意一条数据的供应数量。
update
V_SPJsetqty=111
wheresno='s1'andpno='p1'
(3)删除视图V_SPJ中的任意一条数据(注意所创建视图可以视图消解时,才能正常删除,否则会删除失败;也可以考虑用insteadof触发器实现)。
DELETE
V_SPJ
wheresno='s1'andpno='p1'andqty=111
用insteadof触发器实现
CREATETRIGGERtrdV_SPJ
ONV_SPJ
INSTEADOFDELETE
AS
BEGIN
DeletefromV_SPJ
WHEREsno='s1'andpno='p1'andqty=111
END
可以看到s1、p1、111已将被删除了
5.用图形用户界面对Student数据库中C表的Cno字段创建一个降序排列的唯一索引,索引名称IX_CNo。
(5分)
6.使用SQL语句对Student数据库完成以下的索引操作。
(15分,每题5分)
(1)在C表的CName属性上创建一个非唯一性的聚簇索引,索引名IX_CName。
CREATECLUSTERINDEXIX_CName
ONC(CName)
(提示:
创建这个聚簇索引之前,需要首先删除C表的主键约束。
SQLServer中,给某张表指定主键时,会自动创建为主属性一个聚簇索引。
)
(2)在SC表上创建一个名为IX_Cnosno的非聚簇复合索引,该索引是针对sno,cno属性集建立的升序索引。
CREATEINDEXIX_Cnosno
ONSC(snoASC,cnoASC)
(3)删除C表的索引IX_CName。
DROPINDEXIX_CNameONC
7.自己设计一个实验验证索引对数据库查询效率的提升作用。
(40分)
(提示:
需要数据量比较大的情况下才容易进行对比)
1、创建表:
CREATETABLE[dbo].
[Article](
[Id][int]IDENTITY(1,1)NOTFORREPLICATIONNOTNULL,
[MsId][int]NOTNULL,
[Title][nvarchar](96)NOTNULL,
[TitleBak][nvarchar](96)NOTNULL,
[Summary][nvarchar](512)NOTNULL,[SummaryImageUrl][nvarchar](256)NOTNULL,
[Tag][nvarchar](50)NOTNULL,
[ArticleChannel_Id][int]NOTNULL,
[ArticleCategory_Id][int]NOTNULL,
[IsApproved][bit]NOTNULL,
[Creator_Id][int]NOTNULL,
[CreatedDateTime][datetime]NOTNULL,
[ModifiedDateTime][datetime]NOTNULL,
[ViewCount][int]NOTNULL,
[ReplyCount][int]NOTNULL,
[DiggCount][int]NOTNULL,
[FavoriteCount][int]NOTNULL,
[LastReplyUser_Id][int]NOTNULL,
[LastReplyDateTime][datetime]NOTNULL,
[RightType][int]NOTNULL,
[IsDisplayContent][bit]NOTNULL,
[IsSensitive][bit]NOTNULL,
[Source][int]NOTNULL,
CONSTRAINT[PK_Articles]
PRIMARYKEYCLUSTERED(
[Id]ASC)WITH(
PAD_
INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)
ON[PRIMARY])
ON[PRIMARY]
2、加入测试数据:
DECLARE@numberINT
SET@number=200000
WHILE@number>0
BEGIN
INSERTdbo.Article
(
MsId,
Title,
TitleBak,
Summary,
SummaryImageUrl,
Tag,
ArticleChannel_Id,
ArticleCategory_Id,
IsApproved,
Creator_Id,
CreatedDateTime,
ModifiedDateTime,
ViewCount,
ReplyCount,
DiggCount,
FavoriteCount,
LastReplyUser_Id,
LastReplyDateTime,
RightType,
IsDisplayContent,
IsSensitive,
Source
)
VALUES
(
@number,
'Title'+cast(@numberASVARCHAR(20)),'TitleBak'+cast(@numberASVARCHAR(20)),'Summary'+cast(@numberASVARCHAR(20)),'SummaryImageUrl'+cast(@numberASVARCHAR(20)),'Tag'+cast(@numberASVARCHAR(20)),
1,
2,
0,
@number,
GETDATE(),
GETDATE(),
100,
29,
123,
12,
@number,
GETDATE(),
1,
0,
0,
2
)
SET@number=@number-1
END
创建200000条数据,每条数据包含MsId,Title,TitleBak,Summary,SummaryImageUrl,Tag,ArticleChannel_Id,ArticleCategory_Id,IsApproved,Creator_Id,
CreatedDateTime,ModifiedDateTime,ViewCount,ReplyCount,DiggCount,
FavoriteCount,LastReplyUser_Id,LastReplyDateTime,RightType,IsDisplayContent,IsSensitive这些属性,部分数据截图如下:
3、没建立索引前,利用语句,查询开销,看执行计划
SELECTCreatedDateTime,ViewCount,title,titlebak,summary,summaryimageurl
FROMArticle
WHERECreator_Id=200000
WITHTEMP
AS
(SELECTROW_NUMBER()
OVER(ORDERBYCreatedDateTime)
ASROW,CreatedDateTime,ViewCount,title,titlebak,summary,summaryimageurl
FROMArticle
WHERECreator_Id=200000)
SELECT*FROMTEMP
WHEREROWBETWEEN1AND30
建立索引之后,再执行一次查询,执行计划如下:
由此可见,有索引时,查询开销变小,查询更有效。
2.实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等。
第七题的设计实验,最初看到时,无从下手,不会创建含有大量数据的表,但数据太少,建不建立索引对于查询效率影响并不明显,后来经过查询,找到了创建的方法,并成功创建200000组数据,完成查询,通过设计实验,学到了很多书本上没有的东西。
批阅者:
批阅日期:
实验成绩:
批注:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告