MySQL学生成绩管理系统:常用SQL语句详解
使用MySQL完成并解释学生成绩管理系统常见操作
学生表:
| 字段 | 类型 | 描述 | |---|---|---| | id | int | 学生ID | | name | varchar(20) | 学生姓名 | | age | int | 学生年龄 | | department | varchar(20) | 学生院系 | | province | varchar(20) | 学生省份 |
成绩表:
| 字段 | 类型 | 描述 | |---|---|---| | id | int | 成绩ID | | student_id | int | 学生ID | | subject | varchar(20) | 考试科目 | | score | int | 考试成绩 |
向两个表中插入数据:
... (省略插入数据的具体SQL语句)
常见SQL语句操作:
- 从student表中查询每个院系有多少人
SELECT department, COUNT(*) FROM student GROUP BY department;
解释:从student表中选择院系和每个院系的人数,使用GROUP BY对每个院系分组,并使用COUNT函数统计每个组中的记录数。
- 从score表中查询每个科目的最高分
SELECT subject, MAX(score) FROM score GROUP BY subject;
解释:从score表中选择科目和每个科目的最高分,使用GROUP BY对每个科目分组,并使用MAX函数获取每个组中的最大值。
- 查询李四的考试科目和考试成绩
SELECT subject, score FROM score WHERE student_id=(SELECT id FROM student WHERE name='李四');
解释:从score表中选择李四的考试科目和考试成绩,先在student表中查询李四的id,再在score表中查询该学生的成绩信息。
- 查询所有学生的信息和考试信息
SELECT * FROM student JOIN score ON student.id=score.student_id;
解释:从student表和score表中选择所有列,使用JOIN连接两个表,连接条件为student表中的id等于score表中的student_id。
- 计算每个学生的总成绩
SELECT student_id, SUM(score) AS total_score FROM score GROUP BY student_id;
解释:从score表中选择学生id和对应的总成绩,使用SUM函数计算每个学生的总成绩,使用GROUP BY对每个学生分组。
- 计算每个考试科目的平均成绩
SELECT subject, AVG(score) AS avg_score FROM score GROUP BY subject;
解释:从score表中选择科目和平均成绩,使用AVG函数计算每个科目的平均成绩,使用GROUP BY对每个科目分组。
- 查询计算机成绩低于95的学生信息
SELECT * FROM student JOIN score ON student.id=score.student_id WHERE score.subject='计算机' AND score.score<95;
解释:从student表和score表中选择所有列,使用JOIN连接两个表,连接条件为student表中的id等于score表中的student_id,筛选出计算机成绩低于95的学生信息。
- 将计算机考试成绩按从高到低进行排序
SELECT * FROM score WHERE subject='计算机' ORDER BY score DESC;
解释:从score表中选择所有列,筛选出计算机科目的成绩信息,使用ORDER BY将成绩按照从高到低排序。
- 查询姓张或姓王的学生的姓名、院系和考试科目及成绩
SELECT student.name, student.department, score.subject, score.score FROM student JOIN score ON student.id=score.student_id WHERE student.name LIKE '张%' OR student.name LIKE '王%';
解释:从student表和score表中选择学生姓名、院系、考试科目和成绩,使用JOIN连接两个表,连接条件为student表中的id等于score表中的student_id,筛选出姓张或姓王的学生信息。
- 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
SELECT student.name, student.age, student.department, score.subject, score.score FROM student JOIN score ON student.id=score.student_id WHERE student.province='湖南';
解释:从student表和score表中选择学生姓名、年龄、院系、考试科目和成绩,使用JOIN连接两个表,连接条件为student表中的id等于score表中的student_id,筛选出省份为湖南的学生信息。
原文地址: https://www.cveoy.top/t/topic/ozEX 著作权归作者所有。请勿转载和采集!