收藏 分销(赏)

数据库实验三:综合查询.doc

上传人:xrp****65 文档编号:9854813 上传时间:2025-04-10 格式:DOC 页数:4 大小:69KB 下载积分:10 金币
下载 相关 举报
数据库实验三:综合查询.doc_第1页
第1页 / 共4页
数据库实验三:综合查询.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
实验3综合查询 一、实验目的 进一步掌握SQL Server Query Analyzer的使用方法,加深对SQL Server语言查询语句的理解。熟练掌握数据查询中嵌套查询、分组、统计、计算和组合查询等高级查询的操作方法,并学会综合运用。 二、实验内容 1、在SQL Server Query Analyzer中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 2、分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。 3、使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 4、组合查询实验。 5、计算和分组计算查询的实验。 三、实验步骤 1、检查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)查询选修了课程号’004’和课程号’012’的学生的学号: 2、使用带比较运算的子查询 (4) 查询比’王刚’年龄小的所有学生的信息: 3、 使用带Any, All谓词的子查询 (5)查询比计算机系某一学生年龄小的学生姓名和年龄; (6)查询其他系中比计算机系所有学生年龄都小的学生姓名和年龄: (7)查询与计算机系所有学生的年龄均不同的学生学号, 姓名和年龄: 4、 使用带Exists谓词的子查询和相关子查询 (8) 查询与其他所有学生年龄均不同的学生学号, 姓名和年龄: (9) 查询所有选修了004号课程的学生姓名: (10) 查询没有选修004号课程的学生姓名: (11)查询选修了全部课程的学生姓名: (12) 查询至少选修了学生20040002选修的全部课程的学生的学号: (13) 求没有人选修的课程号和课程名: 5、使用聚集函数: (14)查询学生总人数: (15)查询选修了课程的学生总数: (16)查询所有课程的总学分数和平均学分数,以及最高学分和最低学分: (17)计算004号课程的学生的平均成绩, 最高分和最低分: (18)查询’计算机系’学生”数据结构”课程的平均成绩: (19)查询每个学生的课程成绩最高的成绩信息(学号,课程号,成绩): (20)求成绩低于该门课程平均成绩的学生的成绩信息(学号,课程号,成绩) 6、分组查询 (21)查询各系的学生的人数并按人数从多到少排序 : (22) 查询各系的男女生学生总数, 并按系别,升序排列, 女生排在前: (23) 查询选修了3门课程以上的学生的学号和姓名: (24)查询每个学生所选课程的平均成绩, 最高分, 最低分,和选课门数: (25)查询至少选修了2门课程的学生的平均成绩: (26)查询平均分超过80分的学生的学号和平均分: (27)求各学生的60分以上课程的平均分: (28) 查询”计算机系”中选修了5门课程以上的学生的学号: 五、实验环境 PC计算机,Microsoft Windows操作系统,Microsoft SQL Server数据库管理系统个人版、标准版或企业版。 六、实验要求 1、根据实验内容和每一步骤实验的结果,按课程实验报告的撰写规范完成实验报告。报告可用手写或打印,格式要规范。 2、实验报告至少包括以下内容:①实验目的;②实验环境;③实验内容、步骤、结果和实验过程中出现的问题;④实验过程中主要使用的Transact-SQL语句。 附语句参考: 1、 使用带IN谓词的子查询 (1)查询与’王刚’在同一个系学习的学生的信息: select * from 学生 where 系编号 in (select 系别 from 学生 where 姓名='王刚') (2)查询选修了课程名为’电子商务’ 的学生的学号和姓名: select 学号, 姓名 from 学生 where 学号 in (select 学号 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 年龄< (select 年龄 from 学生 where 姓名='王刚') 3、 使用带Any, All谓词的子查询 (5)查询比计算机系任一学生年龄小的学生姓名和年龄; select 姓名, 年龄 from 学生 where 年龄 <Any (select 年龄 from 学生 where 系编号 in (select 系编号 from 系别 where 系名=‘计算机系’)) (6)查询其他系中比计算机系所有学生年龄都小的学生姓名和年龄: select姓名, 年龄from学生where年龄 <ALL (select年龄from 学生 where系编号 in (select 系编号 from 系别 where 系名=‘计算机系’)) and系编号 not in (select 系编号 from 系别 where 系名=‘计算机系’)) (7)查询与计算机系所有学生的年龄均不同的学生学号, 姓名和年龄: select 学号,姓名,年龄 from 学生 where 年龄<>all (select年龄from 学生 where系编号 in (select 系编号 from 系别 where 系名=‘计算机系’)) 4、 使用带Exists谓词的子查询和相关子查询 (8) 查询与其他所有学生年龄均不同的学生学号, 姓名和年龄: select 学号,姓名,年龄 from 学生 A where not exists (select * from 学生 B where A.年龄=B.年龄 and A.学号<>B.学号) (9) 查询所有选修了004号课程的学生姓名: select 姓名 from 学生 where exists (select * from 选修 where 学号=学生.学号 and 课程号='004') (10) 查询没有选修004号课程的学生姓名: select 姓名 from 学生 where not exists (select * from 选修 where 学号=学生.学号 and 课程号='004') (11)查询选修了全部课程的学生姓名: select 姓名 from 学生 where not exists (select * from 课程 where not exists ( select * from 选修 where 学号=学生.学号 and 课程号=课程.课程号)) (12) 查询至少选修了学生20040002选修的全部课程的学生的学号: select distinct 学号 from 选修 A where not exists (select * from 选修 B where 学号='20040002'and not exists (select * from 选修 C where 学号=A.学号 and 课程号=B.课程号)) (13) 求没有人选修的课程号课程号和课程名: select 课程号,课程名 from 课程 C where not exists (select * from 选修 where 选修.课程号=C.课程号 ) 5、使用聚集函数: (14)查询学生总人数: Select Count(*) as 学生总数 from 学生 (15)查询选修了课程的学生总数: select count(distinct 学号) as 选课学生总数 from 选修 (16)查询所有课程的总学分数和平均学分数,以及最高学分和最低学分: select sum(学分) as 总学分,avg(学分) as 课程平均学分,max(学分) as 最高学分, min(学分) as 最低学分 from 课程 (17)计算004号课程的学生的平均成绩, 最高分和最低分: select avg(成绩) as 平均成绩,max(成绩) as 最高分, min(成绩) as 最低分 from 选修where 课程名='004' (18)查询’计算机系’学生”数据结构”课程的平均成绩: select avg(成绩) from 学生, 课程, 选修,系别 where 学生.学号=选修.学号 and 课程.课程号=选修.课程号 and 学生.系编号=系别.系编号and 系名='计算机系' and 课程名='数据结构' (19)查询每个学生的课程成绩最高的成绩信息(学号,课程号,成绩): select * from 选修 A where grade = (select max(成绩) from 选修 where 学号=A.学号 ) (20)求成绩低于该门课程平均成绩的学生的成绩信息(学号,课程号,成绩) select * from 选修 A where grade < (select avg(成绩) from 选修 where 课程号=A.课程号 ) 6、分组查询 (21)查询各系的学生的人数并按人数从多到少排序 : Select 系编号, Count(*) as 人数 from 学生 group by 系编号 order by 人数 desc (22) 查询各系的男女生学生总数, 并按系别,升序排列, 女生排在前: select 系编号,性别,Count(*) as 人数 from 学生 group by 系编号, 性别 order by 系编号,性别 desc (23) 查询选修了3门课程已上的学生的学号和姓名: select 学号, 姓名 from 学生 where 学号 in (select 学号 from 选修 group by (学号) having count(*)>3) (24)查询每个学生所选课程的平均成绩, 最高分, 最低分,和选课门数: select 学号, avg(成绩) as 平均成绩,max(成绩) as 最高分, min(成绩) as 最低分, count(*) as 选课门数 from 选修 group by 学号 (25)查询至少选修了2门课程的学生的平均成绩: select 学号, avg(成绩) as 平均成绩, from 选修 group by 学号 having count(*)>=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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服