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


前言

本文在上篇文章的基础上难度有所上升,该习题包含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完整语句的使用。

  • 29
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值