MySQL学生成绩管理系统实战操作

一、建库建表

sql 复制代码
mysql> USE mydb11_stu;
Database changed

mysql> CREATE TABLE student(
    ->     id INT(10) NOT NULL UNIQUE PRIMARY KEY,
    ->     name VARCHAR(20) NOT NULL,
    ->     sex VARCHAR(4),
    ->     birth YEAR,
    ->     department VARCHAR(20),
    ->     address VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> CREATE TABLE score(
    ->     id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
    ->     stu_id INT(10) NOT NULL,
    ->     c_name VARCHAR(20),
    ->     grade INT(10)
    -> );
Query OK, 0 rows affected (0.03 sec)

二、向表中插入数据

sql 复制代码
mysql> INSERT INTO student VALUES(901,'张三丰','男',2002,'计算机系','北京市海淀区');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO student VALUES(902,'周全有','男',2000,'中文系','北京市昌平区');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO student VALUES(903,'张思维','女',2003,'中文系','湖南省永州市');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO student VALUES(904,'李广昌','男',1999,'英语系','辽宁省阜新市');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO student VALUES(905,'王翰','男',2004,'英语系','福建省厦门市');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO student VALUES(906,'王心凌','女',1998,'计算机系','湖南省衡阳市');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO score VALUES(NULL,901,'计算机',98);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,901,'英语',80);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,902,'计算机',65);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,902,'中文',88);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,903,'中文',95);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,904,'计算机',70);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,904,'英语',92);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,905,'英语',94);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,906,'计算机',49);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO score VALUES(NULL,906,'英语',83);
Query OK, 1 row affected (0.00 sec)

三、查询题目解答

(1) 分别查询student表和score表的所有记录

sql 复制代码
mysql> SELECT * FROM student;
mysql> SELECT * FROM score;

(2) 查询student表的第2条到5条记录 分页limit 偏移量,条数

sql 复制代码
mysql> SELECT * FROM student LIMIT 1,4;

(3) 查询计算机系和英语系的学生信息

sql 复制代码
mysql> SELECT * FROM student WHERE department IN ('计算机系','英语系');

(4) 查询年龄小于22岁学生信息 年份计算:2026-birth <22

sql 复制代码
mysql> SELECT * FROM student WHERE 2026 - birth < 22;

(5) 查询每个院系人数

sql 复制代码
mysql> SELECT department,COUNT(id) AS 人数 FROM student GROUP BY department;

(6) 查询每个科目最高分

sql 复制代码
mysql> SELECT c_name,MAX(grade) AS 最高分 FROM score GROUP BY c_name;

(7) 查询李广昌的考试科目和成绩

sql 复制代码
mysql> SELECT c_name,grade FROM score s JOIN student st ON s.stu_id=st.id WHERE st.name='李广昌';

(8) 连接查询所有学生信息+考试信息

sql 复制代码
mysql> SELECT st.*,s.c_name,s.grade FROM student st LEFT JOIN score s ON st.id=s.stu_id;

(9) 计算每个学生总成绩

sql 复制代码
mysql> SELECT st.id,st.name,SUM(s.grade) AS 总成绩 FROM student st LEFT JOIN score s ON st.id=s.stu_id GROUP BY st.id,st.name;

(10) 计算每个科目平均成绩

sql 复制代码
mysql> SELECT c_name,AVG(grade) AS 平均成绩 FROM score GROUP BY c_name;

(11) 查询计算机成绩低于95的学生信息

sql 复制代码
mysql> SELECT DISTINCT st.* FROM student st JOIN score s ON st.id=s.stu_id WHERE s.c_name='计算机' AND s.grade <95;

(12) 计算机成绩从高到低排序

sql 复制代码
mysql> SELECT st.name,s.grade FROM student st JOIN score s ON st.id=s.stu_id WHERE s.c_name='计算机' ORDER BY s.grade DESC;

(13) 两表查学号,合并结果 union去重

sql 复制代码
mysql> SELECT id FROM student UNION SELECT stu_id FROM score;

(14) 姓张/姓王 姓名、院系、科目、成绩

sql 复制代码
mysql> SELECT st.name,st.department,s.c_name,s.grade FROM student st LEFT JOIN score s ON st.id=s.stu_id WHERE st.name LIKE '张%' OR st.name LIKE '王%';

(15) 湖南学生:姓名、年龄、院系、科目、成绩

sql 复制代码
mysql> SELECT st.name,2026-st.birth AS 年龄,st.department,s.c_name,s.grade FROM student st LEFT JOIN score s ON st.id=s.stu_id WHERE st.address LIKE '%湖南省%';
相关推荐
聪明的笨猪猪31 分钟前
实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑
java·经验分享·面试·ai编程
愿有所息1 小时前
记一次 ARM64 + JDK8 上 fastjson2 的诡异数据错乱
java
SelectDB1 小时前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库
秋饼1 小时前
MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地
java·ai·技术分享·后端开发
这个DBA有点耶1 小时前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
SL_staff2 小时前
JVS-BI 实战:业务人员如何用零代码 ELT + 可视化配置构建实时经营分析闭环
java·spring·全栈
SL_staff3 小时前
企业AI落地难?JVS-AI渐进式实践:安全可控、小切口验证、标准化沉淀与规模化复制
java·开源·aigc
这个DBA有点耶3 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风3 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio4 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型