西北工业大学大数据库实验报告材料4

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实用文档

一.实验内容、步骤以及结果

1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分)

2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。

1).

create view v_spj

as

select sno,pno,qty

from J,SPJ

where j.jno=spj.jno and jname='三建'

2).

create view view_2

as

select sno,pno,qty

from SPJ

where jno =(select jno from j

where jname ='三建')

3.用SQL语句完成第五版教材第三章第9题中的视图查询(10分,每小题5分)。

1).

select pno,sum(qty) as sum_qty

from v_spj

group by pno

结果:

实用文档

2).

select pno,qty

from v_spj

where sno='S1'

) 5分SQL用语句完成视图的数据更新。(15分,每题4.

V_SPJ中增加一条数据。(1)给视图提示:JNO,由于JNO为NULL-SPJ表中JNO允许为空时,数据可以插入基本表,此时,所以视图中没有该条数据。为NULL instead of触发器实现。SPJ表中JNO不能为空时,可以使用-允许为空时:①:jno insert

into v_spj

values('S4','P3',100)

结果改变:

select * from v_spj

没有出现刚刚插入的那条数据不能为空时:②:jno

实用文档

NULL Jno不能为设立触发器:create trigger instead_of_insert on v_spj

instead of insert

as

begin

declare @sno char(10)

declare @pno char (10)

declare @qty int

select @sno=sno,@pno=pno,@qty=qty

from inserted

insert into SPJ values(@sno,@pno,'J1',@qty)

end

执行语句:insert into v_spj

values ('S5','P4',100)

结果:

中的任意一条数据的供应数量。修改视图V_SPJ(2)

update v_spj

set qty=300

where sno='S1'and pno='P1'

修改前:

修改后:

才能正常删中的任意一条数据V_SPJ(注意所创建视图可以视图消解时,(3)删除视图。instead of除,否则会删除失败;也可以考虑用触发器实现)instead of触发器:创建create trigger instead_of_delete

on v_spj

实用文档

instead of delete

as

begin

declare @sno char(10)

declare @pno char(10)

declare @qty int

select @sno=sno,@pno =pno,@qty=qty

from deleted

delete SPJ where sno=@sno and pno=@pno and jno='J1' and qty =@qty

end

删除前:

删除第一条数据:

delete from v_spj

where sno='S1' and pno='P1'

5.用图形用户界面对Student数据库中C表的Cno字段创建一个降序排列的唯一索引,索引名称IX_CNo。(5分)

6.使用SQL语句对Student数据库完成以下的索引操作。(15分,每题5分)

(1)在C表的CName属性上创建一个非唯一性的聚簇索引,索引名IX_CName。

(提示:创建这个聚簇索引之前,需要首先删除C表的主键约束。SQL Server中,给某张表指定

主键时,会自动创建为主属性一个聚簇索引。)

先删除原主键:

alter table C

drop constraint pk_cno

实用文档

create clustered index IX_Cname on C (cname)

(2)在SC表上创建一个名为IX_Cnosno的非聚簇复合索引,该索引是针对sno,cno属性集建立的升序索引。

create nonclustered index IX_cnosno on SC(cno asc ,sno asc)

(3)删除C表的索引IX_CName。

drop index C.IX_Cname

7.自己设计一个实验验证索引对数据库查询效率的提升作用。(40分)

(提示:需要数据量比较大的情况下才容易进行对比)

1).利用随机数生成8585个数据来进行查询

2)未建立索引之前:

查询选修了1课程的学生的学号和成绩:

select sno,grade

from SC

where cno='1'

相关文档
最新文档