多表连接查询

【实验五、六】

在Gradem或Gradem1数据库中完成下面查询:
(1) 查询计算机工程系女学生的学生学号、姓名及考试成绩。

SELECT A.sno 学号,sname 姓名,degree 成绩
FROM student A,sc B
WHERE A.sno=B.sno AND ssex='女' AND sdept='计算机系';

(2) 查询“李勇”同学所选课程的成绩。(不考虑重名)

SELECT sname 姓名,cno 课程,degree 成绩
FROM student A,sc B
WHERE A.sno=B.sno AND sname='李勇';

(3) 查询“李新”老师所授课程的课程名称。

SELECT tname 姓名,cname 课程
FROM teacher A,course B,teaching C
WHERE A.tno=C.tno AND B.cno=C.cno AND tname='李新';

(4) 查询女教师所授课程的课程号及课程名称。

SELECT tname 姓名,cname 课程,B.cno 课程号
FROM teacher A,course B,teaching C
WHERE A.tno=C.tno AND B.cno=C.cno AND tsex='女';

(5) 查询至少选修一门课程的女学生姓名。

SELECT sname
FROM student A,sc B
WHERE A.sno=B.sno AND ssex='女' 
GROUP BY A.sno
HAVING COUNT(cno)>=1;

(6) 查询姓“王”的学生所学的课程名称。

SELECT sname 姓名,cname 课程
FROM student A,course B,sc C
WHERE A.sno=C.sno AND B.cno=C.cno AND sname like '王%';

(7) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。

SELECT sno 学号,degree 成绩
FROM sc A,course B
WHERE  A.cno=B.cno AND B.cname LIKE '数据库%'
HAVING degree BETWEEN 80 AND 90;

(8) 查询选修“数据库”课程且成绩在80~90分之间的学生姓名及成绩。

SELECT sname 姓名,degree 成绩
FROM sc A,course B,student C
WHERE  A.cno=B.cno AND A.sno=C.sno AND B.cname LIKE '数据库%'
HAVING degree BETWEEN 80 AND 90; 

(9) 查询课程成绩及格的男同学的学生信息及课程号与成绩。

SELECT A.*,cno 课程号,degree 成绩
FROM student A,sc B
WHERE A.sno=B.sno AND degree>60 AND ssex='男';

(10) 查询选修“c04”课程的学生的平均年龄。

SELECT AVG(YEAR(CURDATE())-YEAR(sbirthday)) 平均年龄
FROM student a,sc b
WHERE a.sno=b.sno AND cno='c04';

(11) 查询学习课程名为“数学”的学生学号和姓名。

SELECT A.sno 学号,sname 姓名
FROM student A,sc B,course C
WHERE A.sno=B.sno AND B.cno=C.cno AND cname LIKE '%数学';

(12) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。

SELECT B.cno 课程号,cname 课程名,sno 学号,degree 成绩
FROM sc A,course B,teacher C,teaching D
WHERE A.cno=B.cno AND B.cno=D.cno AND C.tno=D.tno
AND tname='钱军';

(13)查询“钱军”教师任课的课程号,选修其课程的学生的姓名。

SELECT c.cno 课程号,sname 姓名
FROM student a,teacher b,teaching c,sc d
WHERE a.sno=d.sno AND b.Tno=c.tno AND c.cno=d.cno
AND Tname='钱军';

(14)查询在第3学期所开课程的课程名称及成绩

SELECT degree,cname
FROM teaching a,sc b,course c
WHERE a.cno=b.cno AND b.cno=c.cno
AND cterm='3'
GROUP BY sno;

(15)查询“c02”号课程不及格的学生信息。

SELECT *
FROM sc a,student b
WHERE a.sno=b.sno AND cno='c02'
HAVING degree<60;

(16)查询软件工程系成绩在90分以上的学生姓名、性别和课程名称。

SELECT sname 姓名,ssex 性别,cname 课程名称
FROM sc a,student b,course c
WHERE a.sno=b.sno AND a.cno=c.cno
AND sdept='软件系'
AND degree>90;

(17) 查询同时选修了“c04”和“c02”课程的学生姓名和成绩。

SELECT sname 姓名,b.degree 成绩1,c.degree 成绩2
FROM student a,sc b,sc c
WHERE a.sno=b.sno AND b.sno=c.sno 
AND b.cno='a01' AND c.cno='a02'
GROUP BY sname;
  • 44
    点赞
  • 208
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值