1、实验 3 综合查询一、实验目的进一步掌握 SQL Server Query Analyzer 的使用方法,加深对 SQL Server 语言查询语句的理解。熟练掌握数据查询中嵌套查询、分组、统计、计算和组合查询等高级查询的操作方法,并学会综合运用。二、实验内容1、在 SQL Server Query Analyzer 中使用 IN、比较符、ANY 或 ALL 和 EXISTS 操作符进行嵌套查询操作。2、分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。3、使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。4、组合查询实验。5、计算和分组计算查询的实验。三、实验步骤1、
2、检查 Microsoft SQL Server 服务器已启动;2、进入 SQL Server Management Studio,启动查询分析工具;3、将查询需求用 T-SQL 语言表示;在 SQL Server Query Analyzer 的输入区中输入 T-SQL查询语句;设置 Query Analyzer 的结果区为 Standard Execute(标准执行)或 Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。四、实验方法1、 使用带 IN 谓词的子查询(1)查询与王刚在同一个系学习的学生的信息:(2)
3、查询选修了课程名为电子商务 的学生的学号和姓名:(3)查询选修了课程号004和课程号012的学生的学号:2、使用带比较运算的子查询(4) 查询比王刚年龄小的所有学生的信息:3、 使用带 Any, All 谓词的子查询(5)查询比计算机系某一学生年龄小的学生姓名和年龄;(6)查询其他系中比计算机系所有学生年龄都小的学生姓名和年龄:(7)查询与计算机系所有学生的年龄均不同的学生学号, 姓名和年龄:4、 使用带 Exists 谓词的子查询和相关子查询(8) 查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:(9) 查询所有选修了 004 号课程的学生姓名:(10) 查询没有选修 004 号课程的
4、学生姓名:(11)查询选修了全部课程的学生姓名:(12) 查询至少选修了学生 20040002 选修的全部课程的学生的学号:(13) 求没有人选修的课程号和课程名:5、使用聚集函数:(14)查询学生总人数:(15)查询选修了课程的学生总数:(16)查询所有课程的总学分数和平均学分数,以及最高学分和最低学分:(17)计算 004 号课程的学生的平均成绩, 最高分和最低分:(18)查询计算机系学生”数据结构”课程的平均成绩:(19)查询每个学生的课程成绩最高的成绩信息(学号,课程号,成绩):(20)求成绩低于该门课程平均成绩的学生的成绩信息(学号,课程号,成绩)6、分组查询(21)查询各系的学生的
5、人数并按人数从多到少排序 :(22) 查询各系的男女生学生总数, 并按系别,升序排列, 女生排在前:(23) 查询选修了 3 门课程以上的学生的学号和姓名:(24)查询每个学生所选课程的平均成绩, 最高分, 最低分,和选课门数:(25)查询至少选修了 2 门课程的学生的平均成绩:(26)查询平均分超过 80 分的学生的学号和平均分:(27)求各学生的 60 分以上课程的平均分:(28) 查询”计算机系”中选修了 5 门课程以上的学生的学号:五、实验环境PC 计算机,Microsoft Windows 操作系统,Microsoft SQL Server 数据库管理系统个人版、标准版或企业版。六、
6、实验要求1、根据实验内容和每一步骤实验的结果,按课程实验报告的撰写规范完成实验报告。报告可用手写或打印,格式要规范。2、实验报告至少包括以下内容:实验目的;实验环境;实验内容、步骤、结果和实验过程中出现的问题;实验过程中主要使用的 Transact-SQL 语句。附语句参考:1、 使用带 IN 谓词的子查询(1)查询与王刚在同一个系学习的学生的信息:select * from 学生 where 系编号 in (select 系别 from 学生 where 姓名=王刚)(2)查询选修了课程名为电子商务 的学生的学号和姓名:select 学号, 姓名 from 学生 where 学号 in(se
7、lect 学号 from 选修 where 课程号 in (select 课程号 from 课程 where 课程名=电子商务)(3)查询选修了课程号004和课程号012的学生的学号:select 学号 from 学生 where 学号 in (select 学号 from 选修 where 课程号=004)and 学号 in (select 学号 from 选修 where 课程号=012)2、使用带比较运算的子查询(4) 查询比王刚年龄小的所有学生的信息:select * from 学生 where 年龄all(select 年龄 from 学生 where 系编号 in(select 系
8、编号 from 系别 where 系名=计算机系)) 4、 使用带 Exists 谓词的子查询和相关子查询(8) 查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select 学号,姓名,年龄 from 学生 A where not exists(select * from 学生 B where A.年龄=B.年龄 and A.学号=2(26)查询平均分超过 80 分的学生的学号和平均分:Select 学号, avg(成绩) as 平均成绩 from 选修 group by 学号 having avg(*)=80(27)求各学生的 60 分以上课程的平均分:select 学号, avg(成绩) as 平均成绩 from 选修 where 成绩=60 group by 学号(28) 查询”计算机系”中选修了 5 门课程以上的学生的学号:select 学号 from 选修 where 学号 in (select 学号 from 学生 where 系编号 in(select 系编号 from 系别 where 系名=计算机系)) group by 学号 having count(*)=5