关系数据库语言SQL课后练习题(二)

[前言]
一、题目
二、解题步骤
2.1 统计有学生选修的课程门数。
2.2 求选修C4课程的女学生的平均年龄。
2.3 求LIU老师所授的每门课程的平均成绩。
2.4 统计选修每门课程的学生人数(超过l0人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,则按课程号升序排列。
2.5 检索学号比WANG同学大,而年龄比他小的学生姓名。
2.6 在表SC中检索成绩为空值的学生的学号和课程号。
2.7 检索姓名以L开头的所有学生的姓名和年龄。
2.8 求年龄大于女同学平均年龄的男学生的姓名和年龄。
2.9 求年龄大于所有女同学年龄的男学生的姓名和年龄。
总结


前言

本文在上篇文章的基础上难度有所上升,该习题包含select语句的完整语法。

一、题目

试用SQL查询语句表达下列对第3.2题中4个基本表T、C、S、SC的查询。
①统计有学生选修的课程门数。
②求选修C4课程的女学生的平均年龄。
③求LIU老师所授的每门课程的平均成绩。
④统计选修每门课程的学生人数(超过l0人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,则按课程号升序排列。
⑤检索学号比WANG同学大,而年龄比他小的学生姓名。
⑥在表SC中检索成绩为空值的学生的学号和课程号。
⑦检索姓名以L开头的所有学生的姓名和年龄。
⑧求年龄大于女同学平均年龄的男学生的姓名和年龄。
⑨求年龄大于所有女同学年龄的男学生的姓名和年龄。

二、解题步骤
2.1 统计有学生选修的课程门数。
SELECT COUNT(DISTINCT C#) FROM SC;
2.2 求选修C4课程的女学生的平均年龄。
SELECT AVG(AGE)
FROM S,SC
WHERE S.S#=SC.S# AND C#=’C4’AND SEX=’F’;
2.3 求LIU老师所授的每门课程的平均成绩。
SELECT C.C#.AVG(SCORE)
FROM SC,C,T
WHERE SC.C#=C.C# AND C.T#=T.T# AND TNAME=’LIU’
GROUP BY C.C#;
2.4 统计选修每门课程的学生人数(超过l0人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,则按课程号升序排列。
SELECT C#.COUNT(S#)
FROM SC
GROUPBY C#
HAVING COUNT(*)>10
ORDER BY 2 DESC,1;
2.5 检索学号比WANG同学大,而年龄比他小的学生姓名。
SELECT SNAME
FROM S
WHERE S#>ALL(SELECT S# FROM S
WHERE SNAME=’WANG’)
AND AGE
FROM S
WHERE SNAME=’WANG);
2.6 在表SC中检索成绩为空值的学生的学号和课程号。
SELECT S#.C#
FROM SC
WHERE SCORE IS NULL;
2.7 检索姓名以L开头的所有学生的姓名和年龄。
SELECT SNAME.AGE
FROM S
WHERE SNAME LIKE’L%’;
2.8 求年龄大于女同学平均年龄的男学生的姓名和年龄。
SELECT SNAME.AGE
FROM S
WHERE SEX=’M’
AND AGE>(SELECT AVG(AGE)
FROM S
WHERE SEX=’F’);
2.9 求年龄大于所有女同学年龄的男学生的姓名和年龄。
SELECT SNAME,AGE
FROM S
WHERE SEX=-‘M’
AND AGE>ALL(SELECT AGE
FROM S
WHERE SEX=’F’);

总结

总体来讲本题难度不大,只需读者熟练对select完整语句的使用。

posted on 2022-12-01 20:27  静以修身俭以养德  阅读(223)  评论(0编辑  收藏  举报

导航