数据库实验报告4.docx

上传人:b****7 文档编号:9629745 上传时间:2023-02-05 格式:DOCX 页数:14 大小:516.19KB
下载 相关 举报
数据库实验报告4.docx_第1页
第1页 / 共14页
数据库实验报告4.docx_第2页
第2页 / 共14页
数据库实验报告4.docx_第3页
第3页 / 共14页
数据库实验报告4.docx_第4页
第4页 / 共14页
数据库实验报告4.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据库实验报告4.docx

《数据库实验报告4.docx》由会员分享,可在线阅读,更多相关《数据库实验报告4.docx(14页珍藏版)》请在冰豆网上搜索。

数据库实验报告4.docx

数据库实验报告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组数据,完成查询,通过设计实验,学到了很多书本上没有的东西。

 

批阅者:

批阅日期:

实验成绩:

批注:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1