SQL查询学生各科成绩的核心方法是使用SELECT语句结合JOIN操作关联学生表、课程表和成绩表,通过GROUP BY分组统计或条件筛选实现灵活查询。
-
基础查询:单表数据提取
若只需查询某个学生的成绩,可直接从成绩表中筛选:sqlCopy Code
SELECT * FROM scores WHERE student_id = 'S001';
此语句返回学号为S001的所有成绩记录,包含科目ID和对应分数。
-
多表关联:获取详细信息
通过JOIN关联学生表(students)、课程表(courses)和成绩表(scores),可显示学生姓名、科目名称等完整信息:sqlCopy Code
SELECT s.name, c.course_name, sc.score FROM scores sc JOIN students s ON sc.student_id = s.id JOIN courses c ON sc.course_id = c.id;
-
分组统计:计算总分或平均分
用GROUP BY按学生分组,结合SUM或AVG函数统计总分/平均分:sqlCopy Code
SELECT s.name, SUM(sc.score) AS total_score FROM scores sc JOIN students s ON sc.student_id = s.id GROUP BY s.name;
-
条件筛选:特定科目或分数段
添加WHERE子句可查询特定科目(如数学)或分数高于阈值的数据:sqlCopy Code
SELECT s.name, sc.score FROM scores sc JOIN students s ON sc.student_id = s.id JOIN courses c ON sc.course_id = c.id WHERE c.course_name = '数学' AND sc.score >= 80;
通过组合SELECT、JOIN、GROUP BY和WHERE语句,可高效查询学生成绩数据,满足从单科明细到综合统计的多样化需求。