实验3 SQL高级查询的应用
- 实验环境:
操作系统:Windows 11 家庭版
数据库管理系统:SQL SERVER 2019
客户端:SSMS 19.3(SQL Server Management Studio 19.3.4.0)
数据库模式:MyDB
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
选课表:SC(Sno,Cno,Grade)
数据库的值:如图2.4(教材52页)
- 在学生选课表中,试用SUM、AVG、COUNT函数统计所有学生的总分、平均分、课程门数。
实验代码:
select sum(grade) as sum,avg(grade) as avg,count(grade) as count
from SC
运行结果:
2、在学生表和学生选课表中,查询学生的学号、姓名、成绩、课程编号信息。
实验代码:
select Student.sno,student.sname,sc.grade,sc.cno
from Student, SC
where Student.sno=Sc.sno;
运行结果:
3、在学生表、学生选课表、课程表中,查询学生的学号、姓名、课程编号、课程名称和课程成绩信息。
实验代码:
select Student.sno,student.sname,sc.cno,Course.cname,sc.grade
from Student, SC ,course
where Student.sno=Sc.sno
and SC.Cno=Course.Cno
运行结果:
4、在学生选课表和学生表中,查询性别为女的所有学生成绩记录。
实验代码:
select student.Sno,SC.Cno,SC.Grade,Student.Sno,Student.Sname,Student.SSex,Student.Sage,Student.Sdept
from Student,SC
where student.sno=SC.sno
and Ssex='女'
运行结果:
5、在学生选课表中,统计学号为201215121的学生的成绩总分、成绩平均分、所修课程门数。
实验代码:
select sum(grade) as Sum,avg(grade) as avg,count(grade) as count
from SC
where sno='201215121'
运行结果:
6、查询平均分最高的10个学生成绩信息,包括学生平均分、课程门数、最高分、最低分字段。
实验代码:
select top 10 avg(grade) as Avg,count(grade) as Count,max(grade)as Max,min(grade)as Min
from Student,SC
where Student.Sno=SC.Sno
group by Student.sno,sname
ORDER BY avg DESC
运行结果:
7、在学生选课表和学生表中,统计各学生所有课程平均分、总分、最高分、最低分、所修课程门数,包括学生学号、学生姓名、平均分、总分、最高分、最低分、所修课程门数字段,并按平均分高低排序。
实验代码:
select Student.Sno,Student.Sname,avg(grade) as Avg,sum(grade) as sum,max(grade)as Max,min(grade)as Min,count(grade) as Count
from Student,SC
where Student.Sno=SC.Sno
group by Student.sno,sname
order by Avg(grade) DESC
运行结果:
8、在学生选课表和课程表中,统计各门课程平均分、所修人数、课程最高分、课程最低分,包括课程编号、课程名称、课程平均分、课程最高分、课程最低分、所修人数字段,并按平均分高低排序。
实验代码:
select course.cno as 课程编号,cname as 课程名称, avg(grade) as 课程平均分,max(grade)as 课程最高分,min(grade)as 课程最低分,count(grade) as 所修人数
from SC,course
where SC.cno=course.cno
group by Course.cno,course.cname
ORDER BY 课程平均分 ASC
运行结果:
- 实验总结:
本节课实验主要使用了连接查询和聚集函数,同时学到了课本以外的方法(top 10),熟练了group by的使用