实验7-8 嵌套查询

MySQL课程 实验7-8 嵌套查询

在Gradem数据库中完成下面查询:
(1) 查询“李勇”同学所选课程的成绩。

SELECT cno,degree 
FROM sc
WHERE cno=any(
	SELECT cno
	FROM teaching
	WHERE cterm='3'
);

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

SELECT cname
FROM course a
WHERE EXISTS(
		SELECT b.cno
		FROM teaching b,teacher c
		WHERE b.tno=c.tno AND b.cno=a.cno
		AND tname='李新'
);

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

SELECT a.cno,cname
FROM course a
WHERE EXISTS(
		SELECT cno
		FROM teacher b,teaching c
		WHERE b.tno=c.tno AND c. cno=a.cno
		AND tsex='女'
);

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

SELECT cname
FROM course a
WHERE EXISTS(
		SELECT c.cno
		FROM student b,sc c
		WHERE a.cno=c.cno AND b.sno=c.sno
		AND sname LIKE '王%'
);

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

SELECT sno,degree 
FROM sc a
WHERE EXISTS(
		SELECT cno
		FROM course b
		WHERE a.cno=b.cno
		AND cname='高等数学' and degree BETWEEN 80 and 90
);

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

SELECT sno,sname
FROM student a
WHERE EXISTS(
		SELECT b.cno
		FROM sc b,course c
		WHERE b.cno=c.cno AND a.sno=b.sno
		AND cname LIKE '%数学%'
);

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

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

(8) 查询在第3学期所开课程的课程号及成绩。

SELECT cno,degree 
FROM sc
WHERE cno=any(
	SELECT cno
	FROM teaching
	WHERE cterm='3'
);

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

SELECT sno,degree 
FROM sc
WHERE cno=(
	SELECT cno
	FROM teaching
	WHERE tno=(
		SELECT tno
		FROM teacher
		WHERE tname='钱军'
	)
);

(10)查询与“李勇”同一个系的同学姓名。

SELECT sname
FROM student
WHERE sdept=(
	SELECT sdept
	FROM student
	WHERE sname='李勇'
)AND sname<>'李勇';

(11) 查询学号比“刘晨”同学大,而出生日期比他小的学生姓名。

SELECT sname
FROM student
WHERE (sno>(
	SELECT sno
	FROM student
	WHERE sname='刘晨'
	))AND(sbirthday>(
	SELECT sbirthday
	FROM student
	WHERE sname='刘晨'
)		
);

(12)查询出生日期大于所有女同学出生日期的男同学的姓名及系别。

SELECT sname,sdept
FROM student
WHERE (sbirthday>ALL(
	SELECT sbirthday
	FROM student
	WHERE ssex='女'
))AND ssex='男';

(13)查询成绩比该课程平均成绩高的学生的学号及成绩。

SELECT sno,degree 
FROM sc
WHERE degree>=
(SELECT AVG(degree)
	FROM sc
	WHERE sc.cno=sc.cno
); 

(14)查询不讲授“C01”课的教师姓名。

SELECT tname
FROM teacher
WHERE  EXISTS(
	SELECT tno
	FROM teaching
	WHERE cno<>'c01'
);

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

SELECT *
FROM student
WHERE sno IN(
	SELECT sno
	FROM sc
	WHERE cno='c02'
	AND degree<60);

(16)查询没有选修“C02”课程的学生学号及姓名。

SELECT sno,sname
FROM student
WHERE sno IN(
	SELECT sno
	FROM sc
	WHERE cno<>'c02'
);

(17)查询选修了“高等数学”课程的学生学号、姓名及系别。

SELECT sno,sname,sdept
FROM student
WHERE sno IN(
	SELECT sno
	FROM sc
	WHERE cno=(
		SELECT cno
		FROM course
		WHERE cname='高等数学'
));

编辑:qq:2535568540

猜你喜欢

转载自blog.csdn.net/HUCRXHF/article/details/121418524
7-8