数据库综合练习题(教务系统查询)

教务系统中有3个基本表:

学生信息表S(SNO, SNAME, AGE, SEX),其中字段分别表示学号、姓名、年龄、性别。

课程信息表C(CNO, CNAME, CTEACHER),其中字段分别表示课程号、课程名、任课老师。

考试成绩表SC(SNO, CNO, SCGRADE),其中字段分别表示学号、课程号、成绩。

1)把SC表中每门课程的平均成绩插入到另一个已经存在的表SC_C(CNO,CNAME,NUMBER,AVG_GRADE)中,并按平均成绩由高到低进行排序,其中NUMBER表示每门课的选课人数,AVG_GRADE表示每门课程的平均成绩。

insert into sc_c(cno, cname, number, avg_grade)
select sc.cno, c.cname, count(sc.cno), avg(sc.scgrade)
from sc, c where sc.cno=c.cno -- 使用内连接将表sc和表c联结起来 group by sc.cno -- group by 分组之后,聚集函数avg()会计算每个分组的平均值 order by avg(sc.scgrade) desc; -- 进行排序

2)从SC表中把选李士林老师所授课程的女生的选课记录删除

delete from sc 
where sc.cno in (select c.cno from s, c where c.cteacher='李士林' and s.sex='F')  -- 在sc表中确定授课老师是李士林
and sc.sno in (select s.sno from s, c where c.cteacher='李士林' and s.sex='F');  -- 在sc表中确定学生性别是女
-- 在MySQL中,不能在同一个表中即查询又更新,因此在select子查询中不能使用sc表。
-- 将表c和表s组成一个临时的表,在这个临时的表中分别查找满足授课老师是李士林且学生是女性的课程编号和学生编号。要删除的sc表的记录必须同时满足课程编号和学生编号的限制。
-- select * from s, c; 该语句会获得表s和表c的笛卡尔积的返回结果。

3)规定女生所选选李士林老师的课程的成绩都应该在80分以上(含80分)

-- 该功能使用到了SQL的检查约束(即CHECK约束)80分以下的记录无法插入到表中,目前MySQL不支持该约束。

4)找出没有选修过赵士林老师课程的所有学生的姓名

--使用not in子句
select s.sname from s where s.sno not in(
select s.sno from s, c, sc where c.cteacher='赵士林' and c.cno=sc.cno and sc.sno=s.cno);
--使用not exists子句 先对外层表进行loop循环遍历
select s.sname from s where not exists(
select * from c, sc where c.cteacher='赵士林' and c.cno=sc.cno ad sc.sno=s.sno);

5)列出有两门以上(含两门)不及格课程(成绩小于60分)的学生的学号、姓名及其平均成绩

select s.sno, s.sname, avg(sc.scgrade) as avg_grade
from s, sc, (select sno from sc where scgrade<60 group by sno having count(distinct cno)>=2) as bujige
where bujige.sno=s.sno and bujige.sno=sc.sno
group by s.sno;
-- 使用视图
create view bujige as
select sno from sc where scgrade<60 group by sno having count(distinct cno)>=2;
select s.sno, s.sname, avg(sc.scgrade) as avg_grade from s, sc, bujige where bujige.sno=s.sno and bujige.sno=sc.sno group by s,sno;

6)列出既学过高等数学,又学过计算机基础的所有学生的学号、姓名

-- 通过分组并判断组中的数目的方式
select s.sno, s.sname 
from s, (select sno from c, sc where c.cno=sc.cno and c.cname in ('高等数学', '计算机基础') group by sc.sno having count(distinct sc.cno)=2) as a
where s.sno=a.sno;
-- 也可将select子句转变成视图
create view a as
select sno from c, sc where c.cno=sc.cno and c.cname in ('高等数学', '计算机基础') group by sc.sno having count(distinct sc.cno)=2;
select s.sno, s.sname from s, a
where s.sno=a.sno;
-- 通过分别确定选了高等数学和计算机基础的人,然后取交集
select s.sno, s.sname 
from s, 
(select sc.sno from sc, c where c.cname='高等数学' and c.cno=sc.cno) as sc2,
(select sc.sno from sc, c where c.cname='计算机基础' and c.cno=sc.cno) as sc3
where s.sno=sc2.sno and s.sno=sc3.sno;

7)列出线性代数成绩比高等数学成绩高的所有同学的学号、姓名

-- 即选了高等数学又选了线性代数,且线性代数的成绩高于高等数学的成绩
select s.sno, s.sname 
from s,
(select sc.* from sc, c where c.cname='高等数学' and c.cno=sc.cno) as sc2,
(select sc.* from sc, c where c.cname='线性代数' and c.cno=sc.cno) as sc3
where s.sno=sc2.sno and s.sno=sc3.sno and sc2.scgrade<sc3.scgrade;
--使用自连接
select s.sno, s.sname
from s, sc as sc1, c as c1, sc as sc2, c as c2
where (c1.cname='高等数学' and c1.cno=sc1.cno)
and (c2.cname='线性代数' and c2.cno=sc2.cno)
and (sc1.sno=sc2.sno)
and (sc1.scgrade<sc2.scgrade)
and (s.sno=sc1.sno);

8)列出线性代数成绩比高等数学成绩高的所有学生的学号、姓名及其高等数学和线性代数成绩

select s.sno, s.sname, sc1.scgrade as 高等数学成绩,  sc2.scgrade as 线性代数成绩
from s, sc as sc1, sc as sc2, c as c1, c as c2
where (c1.cname='高等数学' and c1.cno=sc1.cno)
and (c2.cname='线性代数' and c2.cno=sc2.cno)
and (sc1.sno=sc2.sno)
and (sc1.scgrade<sc2.scgrade)
and (s.sno=sc1.sno);

 

转载于:https://www.cnblogs.com/0820LL/p/9775749.html

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL数据库综合教务管理系统是一种基于SQL数据库技术开发的综合教务管理系统。该系统主要用于学校或教育机构进行学生信息管理、课程管理、教师管理、考试管理等方面的工作。 首先,该系统可以实现学生信息管理功能。学校可以通过系统录入学生的个人信息,包括学生的姓名、性别、年龄、联系方式等。同时,系统还可以提供学生档案的存储和查询功能,方便学校对学生的信息进行统一管理和查找。 其次,该系统可以实现课程管理功能。学校可以通过系统录入各个课程的相关信息,包括课程名称、授课教师、上课时间和地点等。学生和教师可以通过系统查询自己所参与的课程信息,方便了解授课内容和课程安排。 再次,该系统可以实现教师管理功能。学校可以通过系统进行教师信息的录入和管理,包括教师的个人信息、教龄、所教授的课程等。系统还可以提供教师评价和绩效考核等功能,方便学校对教师的工作进行评估和管理。 最后,该系统可以实现考试管理功能。学校可以通过系统录入考试的相关信息,包括考试科目、考试时间和考试地点等。系统还可以提供成绩管理功能,方便学校统计和查询学生的考试成绩,及时进行成绩分析和评定。 综上所述,SQL数据库综合教务管理系统通过利用SQL数据库技术,实现学生信息管理、课程管理、教师管理和考试管理等多个功能。该系统的使用可以帮助学校或教育机构提高教务管理的效率和准确性,更好地为学生和教师提供各种教务服务和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值