小项目——MySQL集训(学生成绩录入)

ddl语句

 
-- 创建学生信息表
CREATE TABLE students (student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生ID',name VARCHAR(50) NOT NULL COMMENT '学生姓名',gender ENUM('男', '女') NOT NULL COMMENT '性别',class VARCHAR(50) NOT NULL COMMENT '班级',registration_date DATE COMMENT '注册日期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';-- 创建科目表
CREATE TABLE subjects (subject_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '科目ID',subject_name VARCHAR(100) NOT NULL UNIQUE COMMENT '科目名称',teacher_name VARCHAR(100) COMMENT '教师姓名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='科目信息表';-- 创建成绩表
CREATE TABLE scores (score_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '成绩ID',student_id INT NOT NULL COMMENT '学生ID',subject_id INT NOT NULL COMMENT '科目ID',score DECIMAL(5, 2) NOT NULL COMMENT '成绩',exam_date DATE COMMENT '考试日期',FOREIGN KEY (student_id) REFERENCES students(student_id) ON DELETE CASCADE,FOREIGN KEY (subject_id) REFERENCES subjects(subject_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成绩表';-- 创建成绩分析表(可选,用于存储分析结果)
CREATE TABLE score_analysis (analysis_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '分析ID',subject_id INT NOT NULL COMMENT '科目ID',avg_score DECIMAL(5, 2) NOT NULL COMMENT '平均分',max_score DECIMAL(5, 2) NOT NULL COMMENT '最高分',min_score DECIMAL(5, 2) NOT NULL COMMENT '最低分',analysis_date DATE COMMENT '分析日期',FOREIGN KEY (subject_id) REFERENCES subjects(subject_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成绩分析表';-- 创建系统配置表(可选,用于存储系统相关配置信息)
CREATE TABLE system_config (config_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '配置ID',config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',config_value VARCHAR(255) COMMENT '配置值',description TEXT COMMENT '配置描述'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';

 dml语句

INSERT INTO students (name, gender, class, registration_date) VALUES
('张三', '男', '一班', '2023-09-01'),
('李四', '女', '二班', '2023-09-02'),
('王五', '男', '三班', '2023-09-03'),
('赵六', '女', '四班', '2023-09-04'),
('孙七', '男', '五班', '2023-09-05');
INSERT INTO subjects (subject_name, teacher_name) VALUES
('数学', '张老师'),
('英语', '李老师'),
('物理', '王老师'),
('化学', '赵老师'),
('生物', '孙老师');
INSERT INTO scores (student_id, subject_id, score, exam_date) VALUES
(1, 1, 85.50, '2023-10-15'), -- 张三的数学成绩
(1, 2, 90.25, '2023-10-15'), -- 张三的英语成绩
(2, 1, 78.75, '2023-10-15'), -- 李四的数学成绩
(2, 2, 88.00, '2023-10-15'), -- 李四的英语成绩
(5, 5, 92.00, '2023-10-15'); -- 孙七的生物成绩
INSERT INTO score_analysis (subject_id, avg_score, max_score, min_score, analysis_date) VALUES
(1, 82.38, 90.50, 75.00, '2023-10-17'), -- 数学成绩分析
(2, 86.75, 92.00, 80.00, '2023-10-17'), -- 英语成绩分析
(5, 89.25, 95.00, 85.00, '2023-10-17'); -- 生物成绩分析
INSERT INTO system_config (config_key, config_value, description) VALUES
('school_name', '阳光中学', '学校名称'),
('admin_email', 'admin@example.com', '管理员电子邮箱'),
('exam_schedule_url', 'https://example.com/exam-schedule', '考试安排网址');

 效果图

 

 

 

 

 增删改查语句

一、增(插入数据)

二、删(删除数据)

三、改(更新数据)

改之前

 运用的MySQL语句为

UPDATE scores set score=95 where subject_id = 5;

 改完之后是

四、查(查询数据)

运用到的MySQL语句是

SELECT config_value from system_config;

 多表联合查询

所用到的MySQL语句是

select students.`name` , scores.score 
from students
JOIN scores on students.student_id = scores.student_id
where scores.student_id = 1;

 效果图

触发器

-- 触发器名称:after_user_insert-- 触发时机:AFTER INSERT
DELIMITER $$  -- 更改默认的语句分隔符为$$,这样可以在触发器内部使用分号
CREATE TRIGGER after_user_insert  -- 创建一个名为after_user_insert的触发器
AFTER INSERT ON students  -- 触发器在students表发生INSERT操作之后触发
FOR EACH ROW  -- 触发器对每一行插入操作都执行一次
BEGIN  -- 触发器开始INSERT INTO scores (subject_id , score )  -- 在scores表中插入一行数据VALUES ( NEW.subject_id, 2) ; 
END;  -- 触发器结束
$$  -- 触发器定义结束,使用新的分隔符
DELIMITER ;  -- 将语句分隔符改回为分号

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【杂记-浅谈EBGP外部边界网关协议、IBGP内部边界网关协议】

一、EBGP概述 EBGP,External Border Gateway Protocol,即外部边界网关协议,EBGP主要用于在不同自治系统(AS)之间交换路由信息,每个AS都有一个独特的AS号码,用于区分不同的自治系统。EBGP通过AS…

Redis实战—基于setnx的分布式锁与Redisson

本博客为个人学习笔记,学习网站与详细见:黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于SETNX的分布式锁 SETNX锁代码实现 修改业务代码 SETNX锁误删问题 SETNX锁原子性问题 Lua脚本 编写脚本 代码优化 总结 Redisson 前言…

C++泛型编程之模板的使用

文章目录 1.模板的概念1.函数模板2.类模板3.模板特化4.模板元编程 2.模板的使用1.函数模板的使用2.类模板的使用3.模板特化4.模板参数推导5.普通函数和函数模板的调用规则1. 非模板函数优先2. 最佳匹配原则3. 显式模板参数指定4. 函数模板特化5. 重载决议示例 7.注意事项8.类模…

v-for中为什么要使用key

在Vue中,v-for指令用于循环遍历数组或对象,并为每个元素或属性生成相应的DOM元素或组件实例。当使用v-for循环渲染时,Vue会尽量复用已有的元素,而不是重新创建。为了实现这个复用机制,Vue会根据每个元素的key来跟踪它们…

基于STM32的温湿度检测TFT屏幕proteus恒温控制仿真系统

一、引言 本文介绍了一个基于STM32的恒温控制箱检测系统,该系统通过DHT11温湿度传感器采集环境中的温湿度数据,并利用TFT LCD屏幕进行实时显示。通过按键切换页面显示,通过按键切换实现恒温控制箱的恒温控制。为了验证系统的可靠性和稳定性&…

MongoDB的核心点是什么,选择是否使用!

MongoDB概述 定义: MongoDB是一个文档数据库,设计目的在于简化应用程序的开发和扩展。起源: 由DoubleClick创始人Dwight Merriman和Kevin O’Connor于2007年启动,以应对大规模流量需求。 MongoDB发展历程 开发背景: 由于关系型数据库无法满足DoubleCl…

在 TS 中使用 Manifold 建模

一 Manifold 是什么 1.1 简介 Manifold 是一个几何处理库,专注于高效、可靠的布尔运算和几何操作。它主要用于3D建模和计算几何领域,提供了高性能的几何算法,适用于需要精确几何计算的应用场景。 1.2 主要特点 高效的布尔运算&#xff1a…

Lombok的hashCode方法

Lombok对于重写hashCode的算法真的是很经典,但是目前而言有一个令人难以注意到的细节。在继承关系中,父类的hashCode针对父类的所有属性进行运算,而子类的hashCode却只是针对子类才有的属性进行运算,立此贴提醒自己。 目前重写ha…

png格式快速压缩该怎么做?在电脑压缩png图片的方法

png格式的图片如何快速压缩变小呢?现在网络的不断发展,图片是日常用来分享展示内容的一种常用手段,其中使用最多的一种图片格式就是png,png格式具有无损压缩支持透明底的特性,在很多的场景下都会使用。 现在图片的清晰…

本周AI动态:生成型AI的命运掌握在法院手中

本周AI领域发生了音乐公司指控两家开发AI歌曲生成器的初创公司Udio和Suno侵犯版权的事件。 美国音乐唱片行业协会(RIAA)周一宣布,由索尼音乐娱乐公司、环球音乐集团、华纳唱片公司等发起的诉讼已经提起。诉讼声称,Udio和Suno在未…

乒乓征途:开球网 跨越积分鸿沟的热爱与挑战

乒乓征途:跨越积分鸿沟的热爱与挑战 在乒乓球这项集速度、技巧与策略于一体的运动中,我以一名业余爱好者的身份,勇敢地踏上了开球网这一竞技的广阔舞台。这里,积分不仅是衡量实力的标尺,更是通往更高层次比赛的通行证…

贷款承诺状态映射参数表,用于加工的提示信息

在设计贷款承诺状态映射参数表时,目的是将贷款的不同状态映射为相应的提示信息,以便于系统能够自动生成和发送通知给相关的借款人或银行员工。以下是一个简化的参数表示例,用于指导贷款状态的加工和提示信息生成: | 状态代码 |…

Arduino - 线性执行器(支撑或滑杆)

Arduino - 线性执行器(支撑或滑杆) Arduino - 执行器 In this tutorial, we are going to learn: 在本教程中,我们将学习: How linear actuator works 线性执行器的工作原理How to make linear actuator extend or retract. 如何使线性执行器伸展或缩…

speakTTS文字转语音播放功能

场景: speak-tts 文字转换语音的使用播放、暂停、恢复 安装 npm install speak-tts 引入 import Speech from ‘speak-tts’ 需求: 1.多条播报内容需要一条一条的播报 一进入页面就开始播报(数组的形式 后台返回) 2.暂停之后 在点…

Java AWT基础—创建一个简单的应用程序

目录 背景: 代码展示: 代码详解: AWT和Swing的区别: 总结: 背景: 在Java中,AWT(Abstract Windows Toolkit)是最早的图形月用户界面(GUI1)工具包,虽然随着Swing的出现,AWT的使用有所减少,但了解AWT基…

百元蓝牙耳机哪款性价比高?盘点性价比高的百元蓝牙耳机品牌

在如今快节奏的生活中,蓝牙耳机已经成为人们日常生活中不可或缺的配件。然而,市面上百元左右性价比高的蓝牙耳机琳琅满目,消费者往往难以选择到一款质量好、耐用的产品。我们希望可以为广大消费者提供一些参考和建议,接下来&#…

基于51单片机电子称—串口显示

基于51单片机电子称设计 (仿真+程序) 功能介绍 具体功能: 1.矩阵键盘组成按键,输入价格结算、打印; 2.用滑动变阻器和ADC0832模拟称重; 3.LCD1602可以显示重量、单价和总价; 4.…

spring03-aop

spring aop: 只能增强方法,,spring aop 底层是动态代理,,,动态代理的本质是生成一个子类,,重写这个方法,进行增强,,所以final修饰的类和方法,&…

0121__线程 thread_once

线程 thread_once_thraed once-CSDN博客

QCOM 平台增加分区流程 及 注意事项

本文以qcom msm8909 为例增加carrier分区,留文以备后忘: 1、修改分区表partition.xml diff --git a/non_hlos/common/config/emmc/partition.xml b/non_hlos/common/config/emmc/partition.xml index 74ca036..11f38bc 100755 --- a/non_hlos/common/con…