资源描述:
《SQL_Server_2005数据库系统实验指导书.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验十二使用视图一.实验目的1.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;2.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系3.学习灵活熟练的进行视图的操作,认识视图的作用二.实验准备1.熟悉SQLSERVER工作环境。2.能连接到EDUC数据库。3.复习有关视图操作的SQL语言命令。三.实验要求1.在实验开始之前做好准备工作。2.实验之后提交实验报告,思考视图和基本表的区别四.实验内容一.定义视图在EDUC数据库中,以Student、Course和Sc表为基础完成以下视图定义1.定义计算机系学生基本情况视图V_Computer;cr
2、eateviewV_Computerasselect*fromstudentwheresdept='计算机学院’2.将Student、Course和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_GcreateviewV_S_C_Gasselects.sno,sname,c.cno,cname,scorefromstudents,coursec,scwheres.sno=sc.snoandc.cno=sc.cno3.将各系学生人数,平均年龄定义为视图V_NUM_AVGcreateviewV_NUM_AVGasselectsdept,count(*),avg(Sage)as
3、Avgagefromstudentgroupbysdept4.定义一个反映学生出生年份的视图V_YEARcreateviewV_YEARasselectyear(getdate())-sagefromstudent5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_GcreateviewV_AVG_S_Gasselectsno,count(*)ascnumavg(score)asavgscorefromscgroupbysno6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_GcreateviewV_AVG_C_Gasselectcno,count(*)assnum,a
4、vg(score)asavgscorefromscgroupbycno二.使用视图1.查询以上所建的视图结果。2.查询平均成绩为90分以上的学生学号、姓名和成绩;selects.sno,sname,avgscorefromV_AVG_S_Gv,studentswheres.sno=v.snoandavgscore>903.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;selectSC.*,Student.snamefromSCjoinStudentonSC.SNO=Student.SNOwherenotexists(selecta.SNO,b.SNOfromSCaleftjoin(
5、selecta.*fromSCajoinV_AVG_C_Gbona.CNO=b.CNOanda.score>=b.avgscore)bona.SNO=b.SNOanda.CNO=b.CNOwhereSC.SNO=a.SNOandb.SNOisnull)1.按系统计各系平均成绩在80分以上的人数,结果降序排列;selectsdept,count(*)ascnum,avg(score)asscorefromscjoinstudentsonsc.sno=s.snogroupbysdepthavingavg(score)>80orderbyscoredesc一.修改视图createviewV_ISa
6、sselect*fromstudentwheresdept='IS'1.通过视图V_计算机系,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM”并查询结果;updateV_计算机系setsno='S1_MMM'wheresno='S1'updateV_计算机系setsno='S4_MMM'wheresno='S4'2.通过视图V_IS,新增加一个学生记录('S12','YANXI',19,'IS'),并查询结果insertintoV_IS系(Sno,Sname,Sage,Sdept)values('S12','YANXI',19,'IS')3.通过视图V_IS,
7、新增加一个学生记录('S13','YANXI',19,'MA'),并查询结果4.通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果deleteV_ISwheresno='S12'orsno='s3'5.要通过视图V_S_C_GRADE,将学号为“S12”的姓名改为“S12_MMM”,是否可以实现?并说明原因可以updateV_S_C_Gsetsname='S12_MMM'wheresno=