一、前言

        该项目非常适合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'

七、答疑解惑 

        代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主。

        还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主VX:18884281851

谢谢各位的支持~~

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: