首页云计算数据库-MySQL 实战项目——学生选课系统数据库设计与实现(附源码)

数据库-MySQL 实战项目——学生选课系统数据库设计与实现(附源码)

时间2024-07-29 03:10:04发布ongwu分类云计算浏览69

一、前言

        该项目非常适合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
-- 在新建查询选择前选择数据库
use 学生选课系统

 创建各实体表:

1. 老师
create table 老师
(
教工号 varchar(50) primary key,
教师姓名 varchar(50) not null,
教师职称 varchar(50)
)
2. 班级
create table 班级
(
班级编号 varchar(50) primary key,
班级名称 varchar(50) not null,
学生数量 int(5)
)
3. 课程
create table 课程
(
课程号 varchar(50) PRIMARY key,
课程名 varchar(50) not null,
课程学分 int(3),
教工号 char(5),
CONSTRAINT FK教工号 FOREIGN KEY (教工号) REFERENCES 老师(教工号)
)
4. 学生
create table 学生
(
学号 varchar(50) PRIMARY key,
学生姓名 varchar(50) not null,
学生性别 varchar(50),
班级编号 varchar(50),
CONSTRAINT FK 班级编号 FOREIGN KEY (班级编号) REFERENCES 班级(班级编号)
)
5. 选课
create table 选课
(
学号 varchar(50),
课程号 varchar(50),
成绩 int(5) not null,
PRIMARY KEY(学号, 课程号)
)

插入数据

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

谢谢各位的支持~~

Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!

展开全文READ MORE
Vault部署保姆级教程_如何安装并配置vault服务器,揭秘ARouter路由机制 新时代【机器学习】与【Pycharm】:【随机数据生成】与智能【股票市场分析】

游客 回复需填写必要信息