数据库实验-数据库索引、视图与触发器_第1页
数据库实验-数据库索引、视图与触发器_第2页
数据库实验-数据库索引、视图与触发器_第3页
数据库实验-数据库索引、视图与触发器_第4页
数据库实验-数据库索引、视图与触发器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、石家庄经济学院实 验 报 告学 院: 信息工程学院 专 业: 网络工程 信息工程学院计算机实验中心制学号411109030110姓名马立杰实验日期2014-4-28实验室260实验室指导教师张有华设备编号22实验内容实验4 数据库索引、视图与触发器一 实验题目1索引的建立和删除操作2视图的创建、修改、更新和查询操作二 实验目的1掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。2掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。三 实验内容1. 索引的建立和删除操作(1) 在S表中,建立按照sno升序的惟一性索引snoIDX。(2)

2、在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。(3) 在S表中,按照生日建立一个非聚簇索引birthdayIDX。(4) 在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。(5) 删除索引cnameIDX。2. 视图的创建、修改、更新和查询操作(1) 建立一个关于所有女生信息的视图S_GIRL。(2) 将各系学生人数,平均年龄定义为视图V_NUM_AVG(3) 建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。(4) 建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。(5) 在视图S_GRADE基础之上,建立一个两门课以

3、上成绩不及格的学生情况视图FAIL_GRADE。(6) 建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。(7) 修改视图S_GIRL,要求只显示1997年以前出生的女生信息。(8) 在视图FAIL_GRADE查询不及格超过2门课的学生信息。(9) 删除视图S_GRADE。(10) 通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。(11) 通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。(12) 通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。(13) 通过视图S_GRADE,将“汪

4、丹”的名字修改为“王丹”,是否可以实现,请说明原因。(14) 通过视图COMPUTE_AVG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实现,请说明原因。四 实验要求1 要求掌握索引的类型,以及创建索引时的注意事项,例如每个表只能创建一个聚集索引,可以创建非聚集索引最多为249个,等等。2 理解创建视图的目的和意义。掌握创建视图时需要考虑的原则:只能在当前数据库中创建视图、视图名不得与该用户的表名相同、可在视图上建立视图、定义视图不能包括ORDER BY等关键字、不能建立临时视图,等等。3 报告中由同学写明具体的操作意图(文字描述)、操作命令(SQL语句)、和执行结

5、果(文字描述+适当截图)。4 对于重要的运行界面和结果窗口,可以用Alt+PrintScreen来截取当前窗口,并粘贴到实验报告中。五 实验步骤1. 索引的建立和删除操作(1) 在STU表中,建立按照sno升序的惟一性索引snoIDX。SQL语句为:create unique index snoIDX on STU(Sno);运行结果如1- 1按所示:命令已成功完成。图1- 1按学号升序建立的唯一性索引(2) 在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。SQL语句为:create unique index scIDX on SC(Sno ASC,Cno DESC);运行结果

6、如1- 2按所示:命令已成功完成。图1- 2按学号升序课程号降序建立索引(3) 在S表中,按照生日建立一个非聚簇索引birthdayIDX。SQL语句为:create nonclustered index birthdayIDX on STU(Sbirthday);执行结果如1- 3对所示:命令已成功完成。图1- 3对生日建立非聚簇索引(4) 在Course表中,建立一个按照课程名升序的聚簇索引cnameIDX。SQL语句为:create clustered index cnameIDX on Course(Cname);运行结果如1- 4按所示:命令已成功完成。图1- 4按课程名升序建立聚簇

7、索引(5) 删除索引cnameIDX。SQL语句为:drop index CameIDX;运行结果如1- 5删所示:表中索引cnameIDX不存在。图1- 5删除cnameIDX索引2. 视图的创建、修改、更新和查询操作(1) 建立一个关于所有女生信息的视图STU_GIRL。SQL语句为:create view STU_GIRL(Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress,Smajor)asselect *from STUwhere Ssex='女'运行结果如1- 6建所示:命令已成功完成。图1- 6建立女生信息的视图(2) 将各系学

8、生人数,平均年龄定义为视图V_NUM_AVGSQL语句为:create view V_NUM_AVG(Sdept,STU_count,A_avg)asselect Sdept,count(Sdept),avg(datediff(year,Sbirthday,getdate()from STUgroup by Sdept执行结果如1- 7建所示:图1- 7建立视图V_NUM_AVG(3) 建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。SQL语句为:create view TOTAL_CREDIT(Sno,sum_credit)asselect SC.Sno,sum(Ccred

9、it)from SC,Coursewhere SC.Cno=Course.Cno group by SC.Sno执行结果如1- 8建所示:图1- 8建立视图TOTAL_CREDIT(4) 建立一个所有学生课程成绩的视图STU_GRADE,包括基本学生信息,课程信息和成绩。SQL语句为:create view STU_GRADEasselect STU.*,Course.*,SC.Sgradefrom SC full join STU on SC.Sno=STU.Sno full join Course on Course.Cno=SC.Cno运行结果如1- 9所所示:图1- 9所有学生课程信息

10、视图(5) 在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。SQL语句为:create view FAIL_GRADEasselect Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress,Smajor,count(Cno) as STU_count from STU_GRADEwhere Grade<60group by Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress having count(Cno)>=2运行结果如1- 10建所示:图1- 10建立视图FAI

11、L_GRADE(6) 建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。SQL语句为:create view SC_FOURasselect STU.*from STUwhere Sno in(select Snofrom SCgroup by Snohaving count(SC.Sno)>=4)运行结果如1-11所示:图1- 11建立至少选修4门课程的学生信息视图(7) 修改视图S_GIRL,要求只显示1997年以前出生的女生信息。SQL语句为:create view STU_GIRL(Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddr

12、ess)asselect *from STUwhere Ssex='女' and datepart(year,Sbirthday)<1997运行结果如1- 12修所示:图1- 12修改S_GIRL视图信息(8) 在视图FAIL_GRADE查询不及格超过2门课的学生信息。SQL语句为:select * from FAIL_GRADE where STU_count>2;运行结果如1- 13从所示:图1- 13从视图中查询信息(9) 删除视图S_GRADE。SQL语句为:drop view STU_GRADE执行结果如1- 14视所示:图1- 14视图列表(10) 通过

13、视图S_GIRL,将“刘丹”的名字修改为“汪丹”,并查询结果。SQL语句为:update STU_GIRLset Sname='汪丹'where Sname='刘丹'运行结果如图1-15所示:图1- 15修改信息(11) 通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。SQL语句为:insert into STU_GIRLvalues('00009','23','刘兰兰','女','1996-8-8','信工'

14、;,'山东',)执行结果如1-16所示:图1- 16向视图中添加信息(12) 通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。SQL语句为:delete from STU_GIRLwhere datepart(year,Sbirthday)=1995执行结果如1- 17删所示:图1- 17删除并查询信息(13) 通过视图S_GRADE,将“汪丹”的名字修改为“刘丹”,是否可以实现,请说明原因。SQL语句为:update STU_Girlset Sname='王丹'where Sname='汪丹'执行结果如1-18所示:图1- 18修改姓名 实现原因:该视图为行列子集视图,是从S和C、SC三个基本表中导出,并且仅是去掉了基本表的某些列,但是主属性所在列没有去掉。此类视图可以更新(14) 通过视图COMPUTE_AVG_GRADE,将“00009”学生的平均分改为90分,是否可以实现,请说明原因。SQL语句为:create view COMPUTE_AVG_GRADE(Sno,Gavg)as select Sno,avg(Grade)from SCgroup by Snoupdate COMPUTE_AVG_GRADEset Gavg=90wher

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论