【实验五、六】
在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;