学生信息管理系统(简化版)数据库部分

使用Mysql,与navicat工具

下面是mysql创建的代码,可做必要修改

-- 创建学生学籍信息表
CREATE TABLE StudentEnrollment (
    -- 学号,作为主键
    student_id VARCHAR(8) NOT NULL,
    -- 学生姓名
    stu_name VARCHAR(8) NOT NULL,
    -- 学生性别
    gender VARCHAR(6) NOT NULL,
    -- 学生班级
    class_ VARCHAR(20) NOT NULL,
    -- 学生出生日期,存储格式为字符串
    birth_date VARCHAR(80) NOT NULL,
    -- 学生所在学校
    school VARCHAR(200) NOT NULL,
    -- 设置学号为主键
    PRIMARY KEY (student_id)
) COMMENT='学生学籍信息表';

-- 创建班级信息表
CREATE TABLE ClassInfo (
    -- 班级班号,作为主键
    class_id VARCHAR(40) NOT NULL,
    -- 班级排名
    cls_rank VARCHAR(40) NOT NULL,
--     班级班主任
    head_teacher VARCHAR(40) NOT NULL,
    -- 班级学生总数
    student_count INT NOT NULL,
    PRIMARY KEY (class_id)
) COMMENT='班级信息表';

-- 创建学生成绩信息表
CREATE TABLE StudentScores (
    -- 学号,作为主键
    student_id VARCHAR(8) NOT NULL,
    -- 学生姓名
    stu_name VARCHAR(8) NOT NULL,
    -- 学生总成绩
    total_score INT NOT NULL,
    -- 学生分数排名
    score_rank INT NOT NULL,
    -- 学生所在班级
    class_ VARCHAR(20) NOT NULL,
    -- 设置学号为主键
    PRIMARY KEY (student_id)
) COMMENT='学生成绩信息表';

-- 添加外键约束,将学生成绩信息表的学号字段与学生学籍信息表的学号字段关联
ALTER TABLE StudentScores
ADD CONSTRAINT fk_student_id
FOREIGN KEY (student_id) REFERENCES StudentEnrollment(student_id);


-- 

-- 插入班级信息
INSERT INTO ClassInfo (class_id, cls_rank, head_teacher, student_count) VALUES
('ClassA', '1', 'TeacherA', 10),
('ClassB', '2', 'TeacherB', 10),
('ClassC', '3', 'TeacherC', 10);

-- 为ClassA插入学生学籍信息
INSERT INTO StudentEnrollment (student_id, stu_name, gender, class_, birth_date, school) VALUES
('A01', 'Alice', 'Female', 'ClassA', '2002-01-01', '海南师范大学'),
('A02', 'Bob', 'Male', 'ClassA', '2002-02-02', '海南师范大学'),
('A03', 'Charlie', 'Male', 'ClassA', '2002-03-03', '海南师范大学'),
('A04', 'Diana', 'Female', 'ClassA', '2002-04-04', '海南师范大学'),
('A05', 'Ethan', 'Male', 'ClassA', '2002-05-05', '海南师范大学'),
('A06', 'Fiona', 'Female', 'ClassA', '2002-06-06', '海南师范大学'),
('A07', 'George', 'Male', 'ClassA', '2002-07-07', '海南师范大学'),
('A08', 'Hannah', 'Female', 'ClassA', '2002-08-08', '海南师范大学'),
('A09', 'Ivan', 'Male', 'ClassA', '2002-09-09', '海南师范大学'),
('A10', 'Julia', 'Female', 'ClassA', '2002-10-10', '海南师范大学');

-- 为ClassA的学生插入成绩信息
INSERT INTO StudentScores (student_id, stu_name, total_score, score_rank, class) VALUES
('A01', 'Alice', 90, 1, 'ClassA'),
('A02', 'Bob', 85, 2, 'ClassA'),
('A03', 'Charlie', 88, 3, 'ClassA'),
('A04', 'Diana', 92, 4, 'ClassA'),
('A05', 'Ethan', 82, 5, 'ClassA'),
('A06', 'Fiona', 87, 6, 'ClassA'),
('A07', 'George', 91, 7, 'ClassA'),
('A08', 'Hannah', 84, 8, 'ClassA'),
('A09', 'Ivan', 89, 9, 'ClassA'),
('A10', 'Julia', 86, 10, 'ClassA');

-- 为ClassB插入学生学籍信息
INSERT INTO StudentEnrollment (student_id, stu_name, gender, class_, birth_date, school) VALUES
('B01', '赵天宇', '男', 'ClassB', '2003-01-01', '海南师范大学'),
('B02', '钱晓晓', '女', 'ClassB', '2003-02-02', '海南师范大学'),
('B03', '孙丽丽', '女', 'ClassB', '2003-03-03', '海南师范大学'),
('B04', '李强', '男', 'ClassB', '2003-04-04', '海南师范大学'),
('B05', '周梅', '女', 'ClassB', '2003-05-05', '海南师范大学'),
('B06', '吴刚', '男', 'ClassB', '2003-06-06', '海南师范大学'),
('B07', '郑洁', '女', 'ClassB', '2003-07-07', '海南师范大学'),
('B08', '王磊', '男', 'ClassB', '2003-08-08', '海南师范大学'),
('B09', '陈静', '女', 'ClassB', '2003-09-09', '海南师范大学'),
('B10', '郭阳', '男', 'ClassB', '2003-10-10', '海南师范大学');

-- 为ClassB的学生插入成绩信息
INSERT INTO StudentScores (student_id, stu_name, total_score, score_rank, class) VALUES
('B01', '赵天宇', 85, 1, 'ClassB'),
('B02', '钱晓晓', 88, 2, 'ClassB'),
('B03', '孙丽丽', 82, 3, 'ClassB'),
('B04', '李强', 90, 4, 'ClassB'),
('B05', '周梅', 87, 5, 'ClassB'),
('B06', '吴刚', 84, 6, 'ClassB'),
('B07', '郑洁', 89, 7, 'ClassB'),
('B08', '王磊', 86, 8, 'ClassB'),
('B09', '陈静', 83, 9, 'ClassB'),
('B10', '郭阳', 80, 10, 'ClassB');

-- 为ClassC插入学生学籍信息
INSERT INTO StudentEnrollment (student_id, stu_name, gender, class_, birth_date, school) VALUES
('C01', '萧炎', '男', 'ClassC', '2004-01-01', '海南师范大学'),
('C02', '云韵', '女', 'ClassC', '2004-02-02', '海南师范大学'),
('C03', '美杜莎', '女', 'ClassC', '2004-03-03', '海南师范大学'),
('C04', '药老', '男', 'ClassC', '2004-04-04', '海南师范大学'),
('C05', '小医仙', '女', 'ClassC', '2004-05-05', '海南师范大学'),
('C06', '萧薰儿', '女', 'ClassC', '2004-06-06', '海南师范大学'),
('C07', '纳兰嫣然', '女', 'ClassC', '2004-07-07', '海南师范大学'),
('C08', '海波东', '男', 'ClassC', '2004-08-08', '海南师范大学'),
('C09', '紫妍', '女', 'ClassC', '2004-09-09', '海南师范大学'),
('C10', '林修崖', '男', 'ClassC', '2004-10-10', '海南师范大学');

-- 为ClassC的学生插入成绩信息
INSERT INTO StudentScores (student_id, stu_name, total_score, score_rank, class_) VALUES
('C01', '萧炎', 92, 1, 'ClassC'),
('C02', '云韵', 88, 2, 'ClassC'),
('C03', '美杜莎', 90, 3, 'ClassC'),
('C04', '药老', 87, 4, 'ClassC'),
('C05', '小医仙', 85, 5, 'ClassC'),
('C06', '萧薰儿', 91, 6, 'ClassC'),
('C07', '纳兰嫣然', 89, 7, 'ClassC'),
('C08', '海波东', 86, 8, 'ClassC'),
('C09', '紫妍', 84, 9, 'ClassC'),
('C10', '林修崖', 83, 10, 'ClassC');

-- 创建视图
-- 创建视图
CREATE VIEW StudentScoresWithTotalRank AS
SELECT
    student_id,  -- 学号
    stu_name,  -- 姓名
    total_score,  -- 总成绩
    RANK() OVER (ORDER BY total_score DESC) AS score_rank,  -- 总分排名
    class_  -- 班级
FROM StudentScores;  -- 从学生成绩表中选择数据

SELECT * FROM StudentScoresWithTotalRank;

DROP VIEW StudentScoresWithTotalRank;


DELETE FROM StudentScores
WHERE student_id = 'A01';

INSERT INTO StudentScores (student_id, stu_name, total_score, score_rank, class_) VALUES
('A02', 'Aliasae', 99, 1, 'ClassA');


CREATE VIEW ViewStudentEnrollment AS
SELECT *
FROM StudentEnrollment;

SELECT *
FROM ViewStudentEnrollment;


CREATE VIEW ViewClassInfo AS
SELECT *
FROM ClassInfo;

SELECT * FROM ViewClassInfo;

DROP VIEW IF EXISTS ViewClassInfo;

-- 修改 StudentEnrollment 表的 class_ 字段,使其数据类型与 ClassInfo 表的 class_id 字段匹配
ALTER TABLE StudentEnrollment MODIFY class_ VARCHAR(40);

-- 添加外键约束
ALTER TABLE StudentEnrollment
ADD CONSTRAINT fk_class FOREIGN KEY (class_) REFERENCES ClassInfo(class_id);

-- 班级表视图
CREATE VIEW ViewClassInfo AS
SELECT
    CI.class_id,
    CI.cls_rank,
    CI.head_teacher,
    COUNT(SE.class_) AS student_count
FROM
    ClassInfo CI
LEFT JOIN StudentEnrollment SE ON CI.class_id = SE.class_
GROUP BY
    CI.class_id,
    CI.cls_rank,
    CI.head_teacher;
    
SELECT * FROM ViewClassInfo;

前端链接:学生信息管理系统(简化版)-CSDN博客

后端接口链接:学生信息管理系统(简化版)后端接口-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933822.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络之传输层协议TCP

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之传输层协议TCP 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 目…

美畅物联丨观看实时视频对服务器带宽有什么要求?

​随着互联网的迅猛发展,实时视频观看已然成为人们日常生活中不可或缺的一部分。不管是视频会议、在线教育,还是在线娱乐,实时视频都起到了极为重要的作用。不过,实时视频的流畅播放对服务器的带宽有着极高的要求。本文将深入探究…

SWIRL:有望成为2025年顶级AI搜索引擎

现在几乎每家公司都会有内部文档系统,如阿里的语雀、钉钉,字节的飞书,Confluence,印象笔记等等都可以提供给B端在局域网部署。因此,如果能把搜索功能做得高效,就能提高自家产品的竞争力。 想象一下&#xf…

技术栈6:Docker入门 Linux入门指令

目录 1.Linux系统目录结构 2.处理目录的常用命令 3.Docker概述 4.Docker历史 5.Docker基本组成 6.Docker底层原理 7.Docker修改镜像源 8.Docker基本命令 9.Docker创建Nginx实战 10.数据卷 11.本地目录直接挂载* 12.镜像和dockerfile 13.容器互联与自定义网络 14.…

LeetCode - #156 上下翻转二叉树(会员题)

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 本题为 LeetCode 的高级会员解锁题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读…

汽车零部件设计之——麦弗逊悬架KC特性分析仿真APP介绍

汽车零部件是汽车工业的基石,是构成车辆的基础元素。一辆汽车通常由上万件零部件组成,包括发动机系统、传动系统、制动系统、电子控制系统等,它们共同确保了汽车的安全、可靠性及高效运行。在汽车产业快速发展的今天,汽车零部件需…

STM32串口接收与发送(关于为什么接收不需要中断而发生需要以及HAL_UART_Transmit和HAL_UART_Transmit_IT的区别)

一、HAL_UART_Transmit和HAL_UART_Transmit_IT的区别 1. HAL_UART_Transmit_IT(非阻塞模式): HAL_UART_Transmit_IT 是非阻塞的传输函数,也就是说,当你调用 HAL_UART_Transmit_IT 时,它不会等到数据完全发…

学生信息管理系统(简化版)后端接口

目录 allAPI __init__.py是空文件,目的让python知道这个文件夹是个包 ClassInfo.py from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from API.database import get_db, Base from sqlalchemy import Column, String,…

网络安全信息收集(总结)更新

目录 重点: 前言: 又学到了,就是我们什么时候要子域名收集,什么时候收集域名,重点应该放前面 思考: 信息收集分为哪几类,什么是主域名,为什么要收集主域名,为什么要收…

微信小程序从后端获取的图片,展示的时候上下没有完全拼接,有缝隙【已解决】

文章目录 1、index.wxml2、index.js3、detail.detail为什么 .rich-text-style 样式可以生效&#xff1f;1. <rich-text> 组件的特殊性2. 类选择器的作用范围3. 样式优先级4. line-height: 0 的作用5. 为什么直接使用 rich-text 选择器无效&#xff1f; 总结 上下两张图片…

【达梦数据库】存储过程调用实践案例-select

目录 前言创建表插入数据查询表中数据创建存储过程打开dbms_output包输出开关调用存储过程 前言 如果要在存储过程中执行一个SELECT语句并处理其结果&#xff0c;你不能直接使用EXECUTE IMMEDIATE&#xff0c;因为EXECUTE IMMEDIATE主要用于执行那些不返回行的语句&#xff08;…

C语言:指针(第一天)

C语言&#xff1a;指针&#xff08;第一天&#xff09; 预备知识 内存地址 字节&#xff1a;字节是内存的容量单位&#xff0c;英文名byte&#xff0c;一个字节有8位&#xff0c;即1byte8bits地址&#xff1a;系统为了便于区分每一个字节而对他们逐一进行的编号&#xff0c;…

vue3如何实现点击回车,自动登录?

vue3如何实现点击回车&#xff0c;自动登录&#xff1f; 场景&#xff1a;登录账号的时候&#xff0c;可能有的人不习惯直接点击登录&#xff0c;而是通过顺手敲个回车键实现登录 解决办法&#xff1a;上代码 //监听回车 function onKeyUp(e) {//console.log(e)if (e.key En…

LNMP和Discuz论坛

文章目录 LNMP和Discuz论坛1 LNMP搭建1.1 编译安装nginx服务1.1.1 编译安装1.1.2 添加到系统服务 1.2 编译安装MySQL服务1.2.1 准备工作1.2.2 编辑配置文件1.2.3 设置路径环境变量1.2.4 数据库初始化1.2.5 添加mysqld系统服务1.2.6 修改mysql的登录密码 1.3 编译安装PHP服务1.3…

目标跟踪算法:SORT、卡尔曼滤波、匈牙利算法

目录 1 目标检测 2 卡尔曼滤波 3《从放弃到精通&#xff01;卡尔曼滤波从理论到实践》视频简单学习笔记 3.1 入门 3.2 进阶 3.2.1 状态空间表达式 3.2.2 高斯分布 3.3 放弃 3.4 精通 4 匈牙利算法 5 《【运筹学】-指派问题&#xff08;匈牙利算法&#xff09;》视…

Linux DNS之进阶篇bind-chroot企业级部署方式

BIND-chroot 服务是利用 chroot 机制为 BIND 服务创建伪根目录以限制其访问范围&#xff0c;增强安全性&#xff0c;但配置与维护相对较为复杂的一种服务机制。 本章我们将部署chroot模式的DNS服务&#xff0c;以增加安全性 案例要求&#xff1a; 此案例域名为xjh.com www 解析…

241206学习日志——[CSDIY] [InternStudio] 大模型训练营 [21].md

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…

YOLOv5白皮书-第Y2周:训练自己的数据集

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营]中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊]** 本人往期文章可查阅&#xff1a; 深度学习总结 接着上一篇文章 YOLOv5白皮书-第Y1周&#xff1a;调用官方权重进行检测 &#xff0c;…

Java的Mvc整合Swagger的knife4框架

Swagger的介绍 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用Swagger&#xff0c;就是把相关的信息存储在它定义的描述文件里面&#xff08;yml或json格式&#xff09;&#xff0c;再通过维护这个描述 文件可以去更…

共筑数字安全防线,2024开源和软件安全沙龙即将启幕

随着数字化转型进程的加快以及开源代码的广泛应用&#xff0c;开源凭借平等、开放、协作、共享的优秀创作模式&#xff0c;逐渐成为推动数字技术创新、加速传统行业转型升级的重要模式。但随着软件供应链日趋复杂多元&#xff0c;使得其安全风险不断加剧&#xff0c;针对软件供…