实验三 交互式SQL:数据查询 联系客服

发布时间 : 星期五 文章实验三 交互式SQL:数据查询更新完毕开始阅读4982196c25c52cc58ad6be00

?? ?? select 学号, count(课程号)成绩高于分的门数 from xs_kc where 成绩>80 group by 学号having count(课程号)>2; 三、 连接查询 1. 查询每个学生的基本情况及选修的课程情况,格式如下: 学号 ?? 姓名 ?? 专业 ?? 课程号 成绩 ?? ?? select xs.学号,姓名,专业,课程号,成绩from xs,xs_kc where xs.学号=xs_kc.学号; 2. 查询选修了课程号为101的每个学生的姓名及成绩。 select 姓名,成绩from xs,xs_kc where xs.学号=xs_kc.学号and 课程号='102'; 3. 查询 “计算机”专业且选修了“计算机基础”课程的学生的学号、姓名及成绩。 select xs.学号,姓名,成绩 from xs, kc,xs_kc where 专业='计算机'and 课程名='计算机基础'; 4. 查询选修了课程号为101的每个学生的基本情况及成绩,若学生未选修101号课程,也包括其情况。 select xs.*,xs_kc.成绩from xs,xs_kc where xs.学号= xs_kc.学号and 课程号= '101' 5. 查询生日相同的学生的姓名和出生日期。格式如下 姓名1 ?? 姓名2 ?? 出生日期 ?? 其中:“姓名1”和“姓名2”中的姓名不能相同。 select x1.姓名,x2.姓名,x1.出生日期from xs x1,xs x2 where MONTH(x1.出生日期)=MONTH(x2.出生日期) and DAY(x1.出生日期)=DAY(x2.出生日期) group by x1.姓名,x2.姓名,x1.出生日期 having not x1.姓名=x2.姓名; 6. 显示每门课程的平均成绩并显示总平均成绩。格式如下: 课程名 ?? 平均成绩 ?? ?? 总平均 select kc.课程名,avg(xs_kc.成绩) as 平均成绩from xs_kc,kc where xs_kc.课程号= kc.课程号group by xs_kc.课程号,kc.课程名; select avg(成绩) as 总平均from xs_kc ; 7. 查询各个专业各门课程的平均成绩。格式如下 专业 ?? 课程名 ?? 平均成绩 ?? select 专业,kc.课程号,avg(成绩) from xs_kc,xs,kc where xs_kc.学号=xs.学号and xs_kc.课程号=kc.课程号 group by 专业,kc.课程号 8. 查询“计算机”专业平均成绩在85分以上的学生的学号、姓名和平均成绩。 select xs.学号,姓名,avg(成绩) 成绩from xs_kc,xs where xs_kc.学号=xs.学号and 专业='计算机' group by xs.学号,姓名having avg(成绩)>85; 四、 子查询的使用 1. 查询平均成绩高于101号课程平均分的课程号及平均成绩。 select 课程号,avg(成绩) 平均成绩from xs_kc group by 课程号 having avg(成绩)>(select avg(成绩) from xs_kc where 课程号='101') 2. 查询“计算机基础”成绩的及格率。 select 100 * sum (case when isnull(xs_kc.成绩,0)>=60 then 1 else 0 end)/count(*) as 及格率 from xs_kc ,kc where xs_kc.课程号=kc.课程号and kc.课程名='计算机基础' 3. 查询101号课程及格的学生的基本情况。 select xs.* ,kc.课程号,成绩from kc,xs_kc,xs where kc.课程号= xs_kc.课程号and xs.学号=xs_kc.学号and kc.课程号='101' and 成绩>60; 4. 查找比所有计算机专业的学生年龄都大的学生的情况。 select * from xs where year(出生日期)> (select max(year(出生日期)) from xs where 专业= '计算机') and 专业<>'计算机'; 5. 查找未选修“C语言”课程的学生的情况。(嵌套子查询) select * from kc,xs_kc where kc.课程号=xs_kc.课程号and 课程名!= (select 课程名from kc where 课程名='C语言'); 6. 查询每个专业年龄最小的学生的基本信息。(相关子查询) select * from xs y where year(出生日期)= (select max(year(出生日期))from xs x group by 专业having x.专业=y.专业 ); 7. 查找选修了“计算机基础”课程的学生的情况。 select * from xs,xs_kc,kc where xs_kc.学号=xs.学号and xs_kc.课程号=kc.课程号and kc.课程名='计算机基础'; 8. 查询“计算机基础”成绩高于平均分的学生的学号,姓名和成绩,并按“计算机基础”成绩从高到低排序。 select xs_kc.学号,xs.姓名,xs_kc.成绩 from xs,xs_kc,kc x where xs_kc.学号=xs.学号and xs_kc.课程号=x.课程号and x.课程名='计算机基础' group by xs_kc.学号,xs_kc.成绩,x.课程号,xs.姓名 having xs_kc.成绩> (select avg(成绩) from xs_kc y where x.课程号=y.课程号) order by xs_kc.成绩desc; 9. 查询“计算机基础”成绩及格的学生的学号、姓名、性别和专业情况。 select xs.学号,xs.姓名,xs.性别,xs.专业from xs,xs_kc,kc where xs_kc.学号=xs.学号and xs_kc.课程号=kc.课程号 and kc.课程名='计算机基础' and xs_kc.成绩>60; 10. 在XS_KC表中查询其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息。 select xs_kc.学号,xs_kc.成绩 from xs_kc where not exists (select xs.学号from xs) and not exists (select kc.课程号from kc) 11. 查询选修全部课程的学生的基本信息。 select * from xs where not exists ( select * from kc where not exists (select * from xs_kc where xs_kc.学号= xs.学号and xs_kc.课程号 = kc.课程号)) 12. 查询至少选修了“4102102”同学选修课程的学生的基本信息。 select * from xs_kc x where not exists(select * from xs_kc y where y.学号='4102102' and not exists(select * from xs_kc z where z.学号=x.学号and z.课程号=y.课程号)); 实验过程中遇到的问题以及如何解决的? 本次实验的体会(结论) 思考题: 评阅教师评语: 评阅教师: 日 期: 得分: