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 '%湖南省%';
相关推荐
hellojike2 小时前
free-stockdb本地金融数据库核心设计
数据库·金融
Nuanyt2 小时前
SSM 学习记录 第二部分 Spring整合Mybatis&Junit AOP核心概念 Spring事务管理 SpringMVC 请求与响应 Rest风格
java·spring·junit·mybatis·restful
醉城夜风~2 小时前
C++模板详解:从基础到高级全面解析
java·开发语言·c++
井川廊咏2 小时前
初探性能优化——2个月到4小时的性能提升
jvm·数据库·性能优化
这个DBA有点耶2 小时前
热点行更新:秒杀场景下一条UPDATE语句的锁等待与性能优化
数据库·sql·mysql·性能优化·database·dba
在水一缸2 小时前
深入浅出:Node.js 下一代 ORM 架构设计与实战解析
数据库·微服务·云原生·node.js·orm·架构设计
爱喝水的鱼丶3 小时前
SAP-ABAP:SELECT查询性能优化基础——索引匹配、条件顺序与缓冲机制利用技巧
数据库·性能优化·select·sap·abap·开发交流·交流学习
程序员天天困3 小时前
Arthas Profiler 火焰图实战:CPU 热点在哪一目了然
java·jvm·后端