SQL练习:学生、课程、学生选课关系表查询
SQL练习:学生、课程、学生选课关系表查询
本文提供了基于学生、课程、学生选课关系表的SQL查询练习,涵盖了各种查询场景,例如查询特定学生成绩、筛选特定年龄学生、查找选修特定课程学生等。
假设数据库中存在以下三个表:
- 学生表: 包含学生学号、学生姓名、年龄等信息。
- 课程表: 包含课程编号、课程名称等信息。
- 学生选课表: 包含学生学号、课程编号、成绩等信息。
以下是一些常见的SQL查询练习,以及相应的SQL语句:
- 查询'李四'同学选修课的分数:
SELECT score
FROM 学生选课
WHERE 学生姓名 = '李四';
- 查询年龄大于20岁的学生的学号和姓名:
SELECT 学生学号, 学生姓名
FROM 学生
WHERE 年龄 > 20;
- 查询选修了'数据结构'课程的学生:
SELECT 学生学号, 学生姓名
FROM 学生选课
WHERE 课程名称 = '数据结构';
- 查询'张三'同学没有选修的课程:
SELECT 课程名称
FROM 课程
WHERE 课程编号 NOT IN (SELECT 课程编号 FROM 学生选课 WHERE 学生姓名 = '张三');
- 查询选修了全部课程的学生学号:
SELECT 学生学号
FROM 学生
WHERE 学生学号 IN (SELECT 学生学号 FROM 学生选课 GROUP BY 学生学号 HAVING COUNT(课程编号) = (SELECT COUNT(*) FROM 课程));
- 查询至少选修了2门课程的学生学号:
SELECT 学生学号
FROM 学生选课
GROUP BY 学生学号
HAVING COUNT(课程编号) >= 2;
- 查询同时选修了'03'、'04'号课程的学生:
SELECT 学生学号
FROM 学生选课
WHERE 课程编号 IN ('03', '04')
GROUP BY 学生学号
HAVING COUNT(DISTINCT 课程编号) = 2;
注意:
- 以上查询语句仅供参考,具体语法可能因数据库类型而有所不同。
- 可以根据实际需求修改查询条件和输出字段。
- 建议在实际应用中使用参数化查询,以提高安全性。
原文地址: http://www.cveoy.top/t/topic/o9L2 著作权归作者所有。请勿转载和采集!