一、前言
该项目非常适合MySQL入门学习的小伙伴,博主提供了源码、数据和一些查询语句,供大家学习和参考,代码和表设计有什么不恰当还请各位大佬多多指点。
MySQL可视化
工具:navicat;
数据库:MySql 5.7/8.0等
版本均可;
需求:
学生选课系统主要完成某学校教务系统中选课功能:
学生信息
管理教师信息
管理课程信息
管理教室信息
管理选课
管理
备注:
每个学生可选多门课程,每门课程有多个学生。每位教师教授一门课程。每个班级有多个学生,每个学生对应一个班级。
其中:
学生包含以下属性:学号、学生姓名、学生性别。
教师包含以下属性:教工号、教师姓名、教师职称。
课程包含以下属性:课程号、课程名、课程学分。
教室包含以下属性:班级编号、学生人数、班级名称。
选课包含以下属性:学生成绩。
二、E-R图
课程(课程号、课程名、课程学分、教工号)
教师(教工号、教师姓名、教师职称)
选课(课程号、学号、成绩)
学生(学号、学生姓名、学生性别、班级编号)
班级(班级编号、学生人数、班级名称)
备注:
下划线为主键,红色字为外键;
表1:课程
字段
数据类型
长度
备注
课程号
varchar
50
主键
课程名
varchar
50
Not.null
课程学分
int
3
教工号
varchar
50
外键
表2:教师
字段
数据类型
长度
备注
教工号
varchar
50
主键
教师姓名
varchar
50
Not.null
教师职称
varchar
50
表3:学生
字段
数据类型
长度
备注
学号
varchar
50
主键
学生姓名
varchar
50
Not.null
学生性别
varchar
50
班级编号
varchar
50
外键
表4:班级
字段
数据类型
长度
备注
班级编号
varchar
50
主键
班级名称
varchar
50
Not.null
学生数量
int
5
表5:选课
字段
数据类型
长度
备注
学号
varchar
50
主键
课程号
varchar
50
主键
成绩
int
5
Not.null
Create database 学生选课
系统 character set utf8
collate utf8_general_ci
创建各实体表:
1. 老师
教工号 varchar(50) primary key,
教师姓名 varchar(50) not null,
2. 班级
班级编号 varchar(50) primary key,
班级名称 varchar(50) not null,
3. 课程
课程号 varchar(50) PRIMARY key,
课程名 varchar(50) not null,
CONSTRAINT FK教工号 FOREIGN KEY (教工号) REFERENCES 老师(教工号)
4. 学生
学号 varchar(50) PRIMARY key,
学生姓名 varchar(50) not null,
CONSTRAINT FK 班级编号 FOREIGN KEY (班级编号) REFERENCES 班级(班级编号)
5. 选课
1. 老师
INSERT INTO 老师 VALUES (J001,wuping,教授);
INSERT INTO 老师 VALUES (J002,zhangshuai,讲师);
INSERT INTO 老师 VALUES (J003,liguoqiang,副教授);
INSERT INTO 老师 VALUES (J004,wangni,讲师);
INSERT INTO 老师 VALUES (J005,liubo,讲师);
2. 班级
INSERT INTO 班级
VALUES (
B001,
软件1班,
30);
INSERT INTO 班级
VALUES (
B002,
软件2班,
29);
INSERT INTO 班级
VALUES (
B003,
软件3班,
31);
INSERT INTO 班级 VALUES (B004,嵌入式1班,32);
INSERT INTO 班级 VALUES (B005,嵌入式2班,33);
INSERT INTO 班级 VALUES (B006,嵌入式3班,30);
3. 课程
INSERT INTO 课程
VALUES (
K001,
数据库,
4,
J002);
INSERT INTO 课程 VALUES (K002,java,4,J003);
INSERT INTO 课程 VALUES (K003,python,6,J001);
INSERT INTO 课程 VALUES (K004,英语,2,J005);
INSERT INTO 课程 VALUES (K005,数学,8,J004);
4. 学生
INSERT INTO 学生 VALUES (X005,zhangsan,男,B002);
INSERT INTO 学生 VALUES (X004,lisi,女,B003);
INSERT INTO 学生 VALUES (X003,wangwu,男,B004);
INSERT INTO 学生 VALUES (X002,liuyu,男,B005);
INSERT INTO 学生 VALUES (X001,chenqi,男,B001);
INSERT INTO 学生 VALUES (X006,wangxin,女,B001);
INSERT INTO 学生 VALUES (X007,yangli,男,B002);
INSERT INTO 学生 VALUES (X008,qinyan,女,B006);
5. 选课
INSERT INTO 选课 VALUES (X001,K002,82);
INSERT INTO 选课 VALUES (X001,K003,78);
INSERT INTO 选课 VALUES (X002,K005,90);
INSERT INTO 选课 VALUES (X002,K003,74);
INSERT INTO 选课 VALUES (X003,K001,66);
INSERT INTO 选课 VALUES (X003,K002,75);
INSERT INTO 选课 VALUES (X004,K005,95);
INSERT INTO 选课 VALUES (X004,K004,83);
INSERT INTO 选课 VALUES (X005,K001,75);
INSERT INTO 选课 VALUES (X005,K004,87);
INSERT INTO 选课 VALUES (X007,K001,79);
六、基础查询命令
1.
查看xxx表所有信息:
select * from xxxx *表示全部,查看xxx的全部数据
select * from 老师
2.
查询表的某个或多个字段:
select field1,field2…… from tablenname(表名)
select 学号,学生姓名
from 学生
3.
查询满足条件的信息:
and满足所有条件。or满足其中任何一个条件就可以
select * from 学生
where 学生性别
=男 and 班级编号
=B002 and 学生姓名
= yangli
4. 区间查询:
从选课中选取分数在80~90的(可取端点)
select * from 选课
where 成绩
between 80 and 90
5. 模糊查询:
在选课中查询分数以9开头的信息,%9%是查询信息中含有9的。%表示模糊数据
select * from 选课
where 成绩
like 9%
6. count()
统计函数:
从学生表格中统计B002班的有几个
select count(
*)
from 学生
where 班级编号
=B002
7. sum()求和函数 :
从选课表格中计算分数和。
select sum(成绩)
from 选课
8. avg()平均函数:
求所有学生的平均成绩。
select avg(成绩)
from 选课
9. max()最大函数 :
从选课表格中查询课程号K003课的最高分。
select max(成绩)
from 选课
where 课程号
=K003
10. min()最小值函数:
从选课表格中查询课程号K003课的最低分
select min(成绩)
from 选课
where 课程号
=K003
七、答疑解惑
代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主。
还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。
博主V:18884281851
谢谢各位的支持~~