SQL笔试题解析:学生-课程-成绩关系

需积分: 5 0 下载量 60 浏览量 更新于2024-06-28 收藏 1.14MB DOCX 举报
"SQL经典笔试汇总" SQL是Structured Query Language的缩写,是用于管理和处理关系数据库的标准语言。本文档汇总了SQL的经典笔试题,旨在帮助面试者掌握SQL的基础知识和高级技巧。以下是对其中“学生-课程-成绩”类题目的详细分析。 首先,我们来看一下题目给出的四个表结构: 1. Student表:存储学生的详细信息,包括S#(学生编号)、Sname(姓名)、Sage(年龄)和Ssex(性别)。 2. Course表:记录课程信息,包含C#(课程编号)、Cname(课程名称)和T#(教师编号)。 3. SC表:保存学生选课和成绩,有S#(学生编号)、C#(课程编号)和score(分数)。 4. Teacher表:列出教师信息,包括T#(教师编号)和Tname(教师姓名)。 在创建这些表时,需要注意表之间的关系。通常,S#在Student表中应该是主键,同时在SC表中作为外键;C#在Course表中是主键,在SC表中也是外键;T#在Teacher表中为主键,在Course表中为外键。然而,这里的建表语句没有明确指定这些键,可能需要根据实际需求来添加。 接下来,题目提供了测试数据,分别插入到各个表中,包括学生、教师、课程和成绩的数据。这使得我们可以进行各种查询和操作,例如: 1. 查询所有学生的信息。 2. 查找特定课程的所有选课学生及其成绩。 3. 统计每个学生的平均分。 4. 找出某一门课程得分最高的学生。 5. 按照总分排序,列出所有学生及其总成绩。 6. 获取每位教师所教的课程数量。 这些是基本的SQL查询,可以使用SELECT语句,配合WHERE、GROUP BY、ORDER BY和JOIN等子句来实现。例如: - 要查询所有学生信息,可以使用`SELECT * FROM Student`。 - 要找到所有选修“数学”的学生和他们的成绩,可以执行`SELECT Sname, score FROM Student JOIN SC ON Student.S# = SC.S# JOIN Course ON SC.C# = Course.C# WHERE Course.Cname = '数学'`。 - 若要计算每个学生的平均分,需要用到聚合函数AVG,如`SELECT Student.S#, AVG(SC.score) AS avg_score FROM Student JOIN SC ON Student.S# = SC.S# GROUP BY Student.S#`。 掌握SQL的基础和进阶技巧,对于数据库管理和数据分析工作至关重要。通过解答这些题目,不仅可以检验SQL语法的理解,还能提升处理实际问题的能力。在面试或实际工作中,熟练运用SQL能高效地处理和分析大量数据,对于解决问题起到关键作用。