学生成绩管理系统(MySQL)

学生成绩管理系统(MySQL)

前言:学习真是逆水行舟,所以不多哔哔,直接上手,因为我一定要变强并且一定会成为一个强者的!。
目的
利用MySQL数据库软件、sql语言以及命令提示符cmd命令行工具,加深对数据库原理及应用的理解。
流程

  1. 可在Excel中建立相关的数据表,分析表与表之间的联系,生成相应的sql语句存放在文本文档中;
  2. 在主机localhost上启动MySQL服务端和客户端,在客户端下请求相应服务即可;
  3. 总结心得,记录上赶紧的。

素材准备

一、逻辑结构设计:

1)全局E-R图 :

在这里插入图片描述

2)student表及sql语句:

列名数据类型是否允许为null值说明
sidint主键,自增
snamevarchar(4)
sgendervarchar(2)
sageint
smajorvarchar(20)
credit_pointsdouble
create table student (
	sid int primary key auto_increment,
	sname varchar(4) not null,
	sgender varchar(2) not null,
	sage int not null,
	smajor varchar(20) not null,
	credit_points double not null
) ;
insert into student(sid,sname,sgender,sage,smajor,credit_points) values
(1,'刘一','男',23,'物联网工程',12),
(2,'陈二','男',23,'物联网工程',11),
(3,'张三','男',22,'人工智能',10),
(4,'李四','男',22,'人工智能',9),
(5,'王五','男',21,'软件工程',8),
(6,'赵六','男',21,'软件工程',7);

3)teacher表及sql语句:

列名数据类型是否允许为null值说明
tidint主键,自增
tnamevarchar(4)
tgendervarchar(4)
tdeptvarchar(20)
create table teacher(
	tid int primary key auto_increment,
	tname varchar(4) not null,
	tgender varchar(4) not null,
	tdept varchar(20) not null
);
insert into teacher(tid,tname,tgender,tdept) values
(11,'一一','男','计算机科学与数据学院'),
(22,'二二','男','计算机科学与数据学院'),
(33,'三三','男','计算机科学与数据学院'),
(44,'四四','女','计算机科学与数据学院'),
(55,'五五','女','计算机科学与数据学院');

4)course表及sql语句:

列名数据类型是否允许为null值说明
cidint主键,自增
cnamevarchar(20)
credit_pointdouble
create table course(
	cid int primary key auto_increment,
	cname varchar(20) not null,
	credit_point double not null
);
insert into course(cid,cname,credit_point) values
(1,'数据结构与算法(C语言)',3),
(2,'数据库原理及应用(MySQL)',3),
(3,'操作系统(Linux)',3),
(4,'计算机网络(自顶向下思路)',3);

5)course2student表及sql语句:

列名数据类型是否允许为null值说明
c2s_idint主键,自增
course_idint外键
student_idint外键
create table course2student(
	c2s_id int primary key auto_increment,
	course_id int,
	student_id int,
	foreign key(course_id) references course(cid)
	on update cascade 
	on delete cascade,
	foreign key(student_id) references student(sid)
	on update cascade
	on delete cascade
);
insert into course2student(c2s_id,course_id,student_id) values
(1,1,1),
(2,1,2),
(3,1,3),
(4,1,4),
(5,1,5),
(6,1,6),
(7,2,1),
(8,2,2),
(9,2,3),
(10,2,4),
(11,2,5),
(12,2,6),
(13,3,1),
(14,3,2),
(15,3,3),
(16,3,4),
(17,3,5),
(18,3,6),
(19,4,1),
(20,4,2),
(21,4,3),
(22,4,4),
(23,4,5),
(24,4,6);

6)course2teacher表及sql语句:

列名数据类型是否允许为null值说明
c2t_idint主键,自增
course_idint外键
teacher_idint外键
create table course2teacher(
	c2t_id int primary key auto_increment,
	course_id int,
	teacher_id int,
	foreign key(course_id) references course(cid)
	on update cascade
	on delete cascade,
	foreign key(teacher_id) references teacher(tid)
	on update cascade
	on delete cascade
);
insert into course2teacher(c2t_id,course_id,teacher_id) values
(1,1,11),
(2,1,22),
(3,1,33),
(4,2,22),
(5,2,33),
(6,2,44),
(7,3,33),
(8,3,44),
(9,3,55),
(10,4,44),
(11,4,55),
(12,4,11);

7)score表及sql语句:

列名数据类型是否允许为null值说明
s_idint联合主键
c_idint联合主键
s_namevarchar(4)外键
c_namevarchar(20)外键
scoredouble
create table score(
	s_id int,
	c_id int,
	primary key(s_id,c_id),
	s_name varchar(4) not null,
	c_name varchar(20) not null,
	score double not null,
	foreign key(s_id) references student(sid)
	on update cascade
	on delete cascade,
	foreign key(c_id) references course(cid)
	on update cascade
	on delete cascade
);
insert into score(s_id,s_name,c_id,c_name,score) values
(1,'刘一',1,'数据结构与算法(C语言)',95),
(2,'陈二',1,'数据结构与算法(C语言)',90),
(3,'张三',1,'数据结构与算法(C语言)',85),
(4,'李四',1,'数据结构与算法(C语言)',80),
(5,'王五',1,'数据结构与算法(C语言)',75),
(6,'赵六',1,'数据结构与算法(C语言)',70),
(1,'刘一',2,'数据库原理及应用(MySQL)',95),
(2,'陈二',2,'数据库原理及应用(MySQL)',90),
(3,'张三',2,'数据库原理及应用(MySQL)',85),
(4,'李四',2,'数据库原理及应用(MySQL)',80),
(5,'王五',2,'数据库原理及应用(MySQL)',75),
(6,'赵六',2,'数据库原理及应用(MySQL)',70),
(1,'刘一',3,'操作系统(Linux)',95),
(2,'陈二',3,'操作系统(Linux)',90),
(3,'张三',3,'操作系统(Linux)',85),
(4,'李四',3,'操作系统(Linux)',80),
(5,'王五',3,'操作系统(Linux)',75),
(6,'赵六',3,'操作系统(Linux)',70),
(1,'刘一',4,'计算机网络(自顶向下思路)',95),
(2,'陈二',4,'计算机网络(自顶向下思路)',90),
(3,'张三',4,'计算机网络(自顶向下思路)',85),
(4,'李四',4,'计算机网络(自顶向下思路)',80),
(5,'王五',4,'计算机网络(自顶向下思路)',75),
(6,'赵六',4,'计算机网络(自顶向下思路)',70);

二、物理结构设计及实施:

step1:启动MySQL服务端

在win11操作系统cmd窗口下,以管理员的身份打开命令提示符,输入命令语句为mysqld,启动MySQL服务端。
在这里插入图片描述

step2:连接后台服务端

以user的身份运行再重新打开一个cmd窗口作为客户端,输入命令语句mysql -uroot -p,以连接后台服务端。
在这里插入图片描述

step3:创建学生成绩管理数据库s_m

在cmd窗口下输入命令语句create database s_m;创建学生成绩管理数据库s_m;并输入命令语句use s_m,切换到此库下。
在这里插入图片描述

step4:创建表student

输入命令语句create table student(…,…);,创建student表结构;再输入命令语句insert into student(…,…) values(…,…;);,将有关学生的数据信息插入到student表中。
在这里插入图片描述
在这里插入图片描述

step5:创建表teacher

同理,输入命令语句create table teacher(…,…);,创建teacher表结构;再输入命令语句insert into teacher(…,…) values(…,…;);,将有关学生的数据信息插入到teacher表中。
在这里插入图片描述
在这里插入图片描述

step6:创建表course

同理+1,输入命令语句create table course(…,…);,创建course表结构;再输入命令语句insert into course(…,…) values(…,…;);,将有关学生的数据信息插入到course表中。
在这里插入图片描述
在这里插入图片描述

step7:创建表course2student

同理+2,输入命令语句create table course2student(…,…);,创建course2student表结构;再输入命令语句insert into course2student(…,…) values(…,…;);,将有关学生的数据信息插入到course2student表中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

step8:创建表course2teacher

同理+2,输入命令语句create table course2teacher(…,…);,创建course2teacher表结构;再输入命令语句insert into course2teacher(…,…) values(…,…;);,将有关学生的数据信息插入到course2teacher表中。

在这里插入图片描述
在这里插入图片描述

step9:创建表score

同理+3,输入命令语句create table score(…,…);,创建score表结构;再输入命令语句insert into score(…,…) values(…,…;);,将有关学生的数据信息插入到score表中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、功能实现(sql语句)

基本功能的代码操作:

1.客户端连接服务端的命令语句:

mysql -h 127.0.0.1 -p 3306 -uroot -p
(简写命令:mysql -uroot -p)

2.查看所有的库名的命令语句:

```show databases;```

3.查看当前所在的库的命令语句:

```show database();```

4.切换库的命令语句:

```use 库名;```

5.撤销已输入命令的命令语句:

```\c```

6.退出客户端的命令语句:

quit或者exit

7.针对库的增删改查的命令语句:

create database 库名; # 增库
show databases; # 查所有库
show create database 库名; # 查单个库
alter database 名 charset='utf8'; # 改库
drop database 库名; # 删库
……

8.针对表的增删改查的命令语句:

create table 表名(id int,name char(4),…); # 增表
show tables; # 查看当前库下面所有的表名
show create table 表名;
describe 表名; # 可以简写成: desc 表名;
alter table 表名 modify name char(16); # 改表
alter table 表名 add name char(16);#增加一个字段
drop table 表名; # 删表
……

9.针对数据的增删改查的命令语句:

#增数据
insert into 表名 values(1,'刘二');
insert into 表名 values(2,'陈二'),(3,'张三'),(4,'李四');
#查数据
select * from 表名;# 投影该表下的所有数据记录
select name from 表名;
#改数据
update 表名 set name='NAME' where sid > 1;
#删数据
delete from 表名 where sid > 1;
delete from 表名 where name='陈二';
delete from 表名;# 将表所有的数据清空
……

四、总结心得

  • 慌慌张张,匆匆忙忙,从还没开始时的不知所措、稀里糊涂的逃避摆烂,到没有多少时间剩余之际,学习委员电话打来询问情况……
  • 我才不得不、不得已的面对现实,开始接受现实情况,调整心态,然后力所能及的进行“补救”,花了一段时间学习MySQL的基本知识,最后着眼于课程设计,逐步地完成它。
  • 在这次课设的任务完成过程中,我真的体会到课设的魅力和自己能力不足的现实状况。
  • 课程设计,让我主动地去思考,去想我怎么把这课设做出来。
  • 我不懂不知道的东西我要去学习掌握,对这学期上课学习到的知识理论真的加深了理解,甚至可以说改变了我这个人对知识的态度。秉持着一颗敬畏之心去学习和掌握,并利用所学和因项目所需而自身不知道不懂的知识而去学习,这激发了我的好奇心以及探索的欲望,让我感知到自己真是要去学习和掌握的东西实在是多的不得了。
  • 并且,通过这次的课设任务,它给我提供了一个全新的或者说加深了对这个世界运作的认知,客户在请求服务时背后这一切相关的操作是怎样的,它打开了我理解、思考世界的一种全新方式。
  • 类似的,这真的刺激了我要好好学习、不断探索的这一颗小小的心。自己真的要多去专注地、深入地做事学习思考摸索交流,真的,这真的是一件愉悦的事业。
  • 所以,这一次的课程设计,不单单让我加深了对数据库原理及应用的理解和认知,更让我清晰地意识到,人的时间和精力是有限的,我不能再在稀里糊涂地浪费自己在大学宝贵的还仅剩下的两年时光。感谢这次课设的任务,也感谢能去面对并完成它的自己,谢谢!
    ※※※※※※
    2024-06-25
  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值