```markdown
在数据库管理系统中,查询每门课程的课程名称和最高分是一个常见的操作。假设我们有一个学生成绩管理系统,其中包含了课程表和成绩表。我们的目标是从成绩表中查询出每门课程的名称以及该课程的最高分。
假设我们有两个表:courses
表和 scores
表。
course_id
:课程的唯一标识符course_name
:课程的名称
scores 表存储了学生的成绩信息。
student_id
:学生的唯一标识符course_id
:课程的唯一标识符score
:学生的成绩为了查询每门课程的名称和最高分,我们可以通过以下 SQL 查询实现:
sql
SELECT c.course_name, MAX(s.score) AS highest_score
FROM courses c
JOIN scores s ON c.course_id = s.course_id
GROUP BY c.course_name;
FROM courses c
:从 courses
表中选择课程数据,并为该表起一个别名 c
。JOIN scores s ON c.course_id = s.course_id
:通过 course_id
连接 courses
表和 scores
表,确保每个课程的成绩被关联到正确的课程。SELECT c.course_name, MAX(s.score) AS highest_score
:选择每门课程的名称以及该课程的最高成绩。MAX(s.score)
会返回该课程的最高分。GROUP BY c.course_name
:按照课程名称分组,确保每个课程只有一行结果。| course_id | course_name | |-----------|---------------| | 1 | 数学 | | 2 | 英语 | | 3 | 物理 |
| student_id | course_id | score | |------------|-----------|-------| | 1001 | 1 | 85 | | 1002 | 1 | 90 | | 1003 | 2 | 75 | | 1004 | 2 | 80 | | 1005 | 3 | 95 | | 1006 | 3 | 88 |
| course_name | highest_score | |-------------|---------------| | 数学 | 90 | | 英语 | 80 | | 物理 | 95 |
通过以上的 SQL 查询,我们成功地查询出了每门课程的名称和最高分。这种查询方式在实际应用中非常有用,尤其是在教育系统、考试管理系统等场景中,能够帮助管理者迅速获取课程的成绩分布情况。 ```