实验报告课程名称:学院名称:数据原理与应用计算机学院专业班级:计1201学生姓名:张文江学号:201107010122实验2数据查询一、实验目的1.加深对SQL语言和Transact-SQL语言的查询语句等数据操纵语句的理解。2.熟练掌握SQLServer查询分析器的使用方法。3.熟练掌握数据的简单查询、连接查询、嵌套查询和集合查询;4.熟练掌握数据查询中的分组统计、排序等操作;5.熟练掌握多表数据之间的内连接、外连接等操作;6.熟练掌握利用查询进行的数据的增加、修改和删除操作。二、实验环境硬件环境:PC机软件环境:操作系统为MicrosoftWindows2000或以上版本。数据库管理系统为MicrosoftSQLServer2000标准版或企业版。三、实验内容1.熟悉SQLServer企业管理器和查询分析器工具的使用方法。2.利用Transact-SQL实现数据的简单查询、连接查询、嵌套查询和集合查询;3.利用Transact-SQL实现数据查询中的分组统计、排序等操作;4.利用Transact-SQL实现多表数据之间的内连接、外连接等操作;5.利用Transact-SQL实现通过查询进行的数据的增加、修改和删除操作。四、实验步骤1.熟悉SQLServer企业管理器和查询分析器工具的使用方法。2.利用企业管理器实现:(1)向已经建好的学生_课程数据库中的学生、课程和选课3个表中增加数据、修改数据、删除数据。(2)进入SQLServer查询分析器,首先打开利用实验1已经建立并保存过的学生_课程数据库及三个表的语句序列并执行,然后利用Transact-SQL实现:1)检索未选修任何课程的学生学号;selectsnofromSwheresnonotin(selectsnofromSC)检索赵老师所授的课程号,课程名;selectcno,cnamefromCwheretnamelike'赵%'检索所有姓李的同学的基本信息;select*fromSwheresnamelike'李%'检索选修“数据结构”课程的学生的学号;selectsnofromSC,CwhereSC.cno=C.cnoandcname='数据结构'检索年龄介于张强同学年龄和28岁之间的学生的基本信息;select*fromSwhereagebetween'28'and(selectagefromSwheresname='张强')oragebetween(selectagefromSwheresname='张强')and'28'检索至少选修了一门朱虹所讲授课程的学生姓名,学号;selectdistinctsname,S.snofromC,SC,Swheretname='朱虹'andSC.cno=C.cnoandSC.sno=S.sno将学生表中查询的数据保存到一张临时表newtable中。select*intonewtablefroms2)统计所有学生选课的门数;selectsno学生号,count(*)选课门数fromSCgroupbysno统计教师李兰所授每门课程学生的平均成绩;selectcno,avg(grade)as'平均成绩'fromSCgroupbycnohavingcnoin(selectcnofromCwheretname='李兰')统计所有选修人数多于3人的课程号和选课人数,并按人数降序排列,若人数相等则按课程号升序排列;selectcnoAS课程号,count(*)AS选课人数fromscgroupbycnohaving(count(*)>=3)orderbycount(*)desc,cnoasc检索“高等数学”成绩高于该课平均成绩的同学学号;selectdistinctsnofromSC,Cwherecname='高等数学'and(grade>(selectavg(grade)fromSC,Cwherecname='高等数学'))andSC.cno=C.cno检索所有成绩不及格的同学的学号,姓名和课程号。selectS.sno,sname,cnofromS,SCwhereS.sno=SC.snoandgrade<'60'3)将“软件工程”专业选修课程号为“c05”的成绩全部提高5分;updateSCsetgrade=grade+5wheresnoin(selectsnofromSwheredept='软件工程')andcno='c05'创建一个新表,表名为new,用来存放成绩大于60分得学生信息,此表包括:学号,姓名,课程名和成绩。然后从利用实验1已经建立并保存过的学生表、课程表、选课表中查找相关数据信息装入此表中。createtablenew(snovarchar(12),snamevarchar(20)notnull,cnamevarchar(20)notnull,gradeintnull)InsertintonewselectS.sno,sname,C.cname,gradefromS,C,SCwhereS.sno=SC.snoandSC.cno=C.cnoandgrade>'60'4)检索所有学生的学号、姓名、课程号和成绩(注:没选某门课的学生成绩相应为NULL)。selectS.sno,sname,cnogradefromSleftjoinSConS.sno=SC.sno五、实验总结要求实验过程中也会经常出现一些基本错误,出现错误时就要找出错误,首先查看相关联的所有表,例如:select*from表名。然后再认真查排除错误。这次试验学会了如何查询数据的每个属性、修改数据和根据不同条件查询数据。经过这次实验我总结出了做实验之前要认真看书,然后参考书上例题做实验这样可以达到事半功倍的效果。