数据库作业整理:
1.select * from student;
2.select * from sc;
3.select * from course;
--查询学生们有哪些专业,只显示专业列,过滤掉重复行
select distinct specialty "专业" from student;
--统计所有学生选修课的课程门数
select sno,count(cno) "选课数" from sc
group by sno;
--选课数
select count(distinct cno) from sc;
--求选修C004课程的学生的平均年龄
select b.cno,avg(a.sage)
from student a inner join sc b
on b.cno='C004' --on后跟连接条件
--使用聚合函数返回的是所有行数据的统计结果,如果需要按某一列数据的值进行分类,在分类的基础上进行查询
group by b.cno;
--学生的平均年龄
select AVG(student.sage) "平均年龄" from student;
--查询选课的平均成绩
select b.cno,avg(b.score) as"平均分"
from student a inner join sc b
on a.sno=b.sno
group by b.cno;
--查询学生选课的平均成绩
select a.sname,avg(b.score) as"平均分"
from student a inner join sc b
on a.sno=b.sno
group by a.sname;
--求学分为3的各门课程的平均成绩
select a.credit ,avg(b.score) as "平均成绩"
from course a inner join sc b
on a.cno=b.cno and a.credit=3
group by a.credit
--要求输出课程号和选修人数
select cno "课程号" ,count(sno) "选课人数" from sc
group by cno;
--统计每门课程的学生选修人数,超过两人的课程才统计。
--要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,则按课程号升序排列
select cno "课程号" ,count(sno) "选课人数" from sc
group by cno --group by把重复的课程号分为一组
having count(sno)>2 --使用having前必须使用group by分组
order by cno, count(sno)desc
--查询所有姓“刘”的学生的姓名和年龄
select student.sname "姓名",student.sage "年龄" from student
where sname like '%刘%'
--在sc表中检索成绩为空值的学生的学号和课程号
select sno "学号" ,cno "课程号" from sc
where score is null
--查询没有学生选修课的课的课程号和课程名
--回答:没有选课不存在课程号和课程名,只有选课了才有课程号,只能知道那个学号的学生没有选课
--男同学的平均年龄
select AVG(sage) "平均年龄" from student
where ssex='男'
--求年龄大于男同学平均年龄的女学生的姓名和年龄
select sname "姓名" ,sage "年龄"from student
where ssex='女' and sage>(
select AVG(sage) from student
where ssex='男')
--子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
--求年龄大于所有男同学年龄的女学生的姓名和年龄
select sname,sage from student
where ssex='女' and sage>All(
select sage from student where ssex='男' )
--查询选修课C001号课程的学生中成绩最高的学生的学号
select sno from SC
where CNO='C001' and SCORE=(
select MAX(score) from SC)
--查询学生的姓名及其所选修课程的课程号和成绩
select sname , cno , score
from student,SC
where Student.sno=SC.SNO
--求每个学生的总学分
select sno , SUM(credit) "总学分"from SC,course
where SC.CNO=course.cno
group by SNO
--查询每门课成绩最低的学生的学号和课程号
select sno ,cno from SC
where SCORE in
(select MIN(score) from SC)