MySQL——存储过程,触发器

BaiduComate:

# 问题1:
# 问题1:
帮我创建两个表student与score表,要求student表有id,createDate,userName,phone,age,sex,introduce,
要求score表有id,scoreName,result,result,studentId(student表的id外键)。
要求student表中插入5条学生信息,都要是中文的。
要求student表中对应studentId插入10条信息,每个学生ID要有2个科目的成绩。
给出DDL与DML语句。

DDL

CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT, -- 学生ID,自增主键createDate DATETIME NOT NULL,       -- 创建日期userName VARCHAR(255) NOT NULL,     -- 用户名phone VARCHAR(20),                   -- 电话号码age INT NOT NULL,                    -- 年龄sex ENUM('男', '女', '其他'), -- 性别introduce TEXT                       -- 简介
);
CREATE TABLE score (id INT PRIMARY KEY AUTO_INCREMENT,      -- 成绩ID,自增主键scoreName VARCHAR(255) NOT NULL,        -- 成绩名称(科目)result INT NOT NULL,                     -- 成绩结果studentId INT,                           -- 学生ID,外键FOREIGN KEY (studentId) REFERENCES student(id) -- 外键约束
);

DML

INSERT INTO student (createDate, userName, phone, age, sex, introduce) VALUES
('2023-04-01 08:00:00', '张三', '13800138000', 20, '男', '来自计算机科学专业'),
('2023-04-01 08:10:00', '李四', '13800138001', 21, '男', '数学系高材生'),
('2023-04-01 08:20:00', '王五', '13800138002', 19, '女', '物理系新生'),
('2023-04-01 08:30:00', '赵六', '13800138003', 20, '女', '化学系学生'),
('2023-04-01 08:40:00', '孙七', '13800138004', 22, '男', '文学爱好者');-- 张三的成绩
INSERT INTO score (scoreName, result, studentId) VALUES
('数学', 95, (SELECT id FROM student WHERE userName = '张三')),
('英语', 88, (SELECT id FROM student WHERE userName = '张三'));-- 李四的成绩
INSERT INTO score (scoreName, result, studentId) VALUES
('物理', 92, (SELECT id FROM student WHERE userName = '李四')),
('化学', 85, (SELECT id FROM student WHERE userName = '李四'));-- 王五的成绩
INSERT INTO score (scoreName, result, studentId) VALUES
('计算机', 90, (SELECT id FROM student WHERE userName = '王五')),
('历史', 80, (SELECT id FROM student WHERE userName = '王五'));-- 赵六的成绩
INSERT INTO score (scoreName, result, studentId) VALUES
('生物', 85, (SELECT id FROM student WHERE userName = '赵六')),
('地理', 82, (SELECT id FROM student WHERE userName = '赵六'));-- 孙七的成绩
INSERT INTO score (scoreName, result, studentId) VALUES
('政治', 89, (SELECT id FROM student WHERE userName = '孙七')),
('音乐', 93, (SELECT id FROM student WHERE userName = '孙七'));

DQL

多表联合

# 问题2:
帮我创建一个多表联合查询以student为主表,查看学生的所有科目成绩总分,并根据总分进行倒序排名,在查询第一列添加排名顺序

SELECT s.id AS studentId,s.userName,SUM(sc.result) AS totalScore
FROMstudent s
JOIN score sc ON s.id = sc.studentId
GROUP BY s.id, s.userName
ORDER BY totalScore DESC;

存储过程

#问题3:存储过程
帮我根据两个DDL创建一个插入信息的存储过程,先插入10条学生表信息,再根据插入的学生表信息插入18@条对应studentId的score成绩,
所有信息随机生成,学生表的自增序号从6开始。

DELIMITER //
CREATE PROCEDURE InsertStudentAndScoreData()
BEGINDECLARE v_student_id INT;DECLARE v_counter INT;DECLARE v_random_score_count INT;-- 设置学生ID自增值为6ALTER TABLE student AUTO_INCREMENT = 6;-- 插入10条随机学生信息WHILE (SELECT COUNT(*) FROM student) < 10 DOINSERT INTO student (createDate, userName, phone, age, sex, introduce)VALUES (NOW(),CONCAT('Student_', FLOOR(RAND() * 10000)),CONCAT('+1', FLOOR(RAND() * 899999999) + 100000000), -- 随机电话号码FLOOR(RAND() * (50 - 18 + 1)) + 18, -- 随机年龄在18到50之间ELT(1 + FLOOR(RAND() * 3), '男', '女', '其他'), -- 随机性别CONCAT('Introduction for ', FLOOR(RAND() * 10000)) -- 随机简介);SET v_student_id = LAST_INSERT_ID(); -- 获取最近插入的学生ID-- 为该学生随机插入1到18条成绩记录SET v_random_score_count = FLOOR(RAND() * 18) + 1; -- 随机决定成绩记录数SET v_counter = 0;WHILE v_counter < v_random_score_count DOINSERT INTO score (scoreName, result, studentId)VALUES (CONCAT('Subject_', FLOOR(RAND() * 100)), -- 随机科目名FLOOR(RAND() * 101), -- 随机分数0到100v_student_id -- 学生ID);SET v_counter = v_counter + 1;END WHILE;END WHILE;
END //
DELIMITER ;CALL InsertStudentAndScoreData();
DELIMITER //
CREATE PROCEDURE InsertStudentAndScoreData()
BEGINDECLARE v_student_id INT;DECLARE v_counter INT DEFAULT 0;DECLARE v_total_scores_to_insert INT DEFAULT 18;DECLARE v_scores_inserted INT DEFAULT 0;DECLARE v_random_student_index INT;DECLARE v_random_score_name VARCHAR(255);DECLARE v_random_result INT;-- 设置学生表的自增序号从6开始ALTER TABLE student AUTO_INCREMENT = 6;-- 插入10条随机学生信息WHILE v_counter < 10 DOINSERT INTO student(createDate, userName, phone, age, sex, introduce)VALUES (NOW(),CONCAT('User', FLOOR(RAND() * 10000)),CONCAT('+', FLOOR(RAND() * 9999999999)),FLOOR(RAND() * 10 + 18),ELT(1 + FLOOR(RAND() * 3), 'Male', 'Female', 'Other'),'Random Introduction');SET v_counter = v_counter + 1;END WHILE;-- 初始化计数器SET v_counter = 0;-- 插入成绩,直到达到18条记录WHILE v_scores_inserted < v_total_scores_to_insert DO-- 随机选择一个已插入的学生IDSET v_random_student_index = FLOOR(RAND() * 10) + 6; -- 学生ID范围从6到15-- 生成随机成绩数据和科目名称SET v_random_score_name = CONCAT('Subject', FLOOR(RAND() * 10));SET v_random_result = FLOOR(RAND() * 101); -- 随机分数从0到100-- 插入成绩记录INSERT INTO score(scoreName, result, studentId)VALUES (v_random_score_name, v_random_result, v_random_student_index);-- 更新已插入成绩计数SET v_scores_inserted = v_scores_inserted + 1;END WHILE;
END //
DELIMITER ;CALL InsertStudentAndScoreData();

#问题4: 触发器
帮我创建一个修改score表scoreName的触发器,当修改scoreNlame的时候脸发,判断修改的scoreName是否是数学,如果是数学就改成(天书).
并且给出测试示例。
#问题5:游标
创建一个两个表的综合游标查询,要求根据学生姓名进行查询,查询的结果返回两个表的综合信息。

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

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

相关文章

Vue3实战Easy云盘(四):使用空间+文件预览+文件分享+文件下载

一、空间使用 Framework.vue中 &#xff08;1&#xff09;引入接口 const api {getUseSpace: "/getUseSpace",logout: "/logout", }; &#xff08;2&#xff09;回调 // 使用空间 const useSpaceInfo ref({ useSpace: 0, totalSpace: 1 }); const g…

unreal engine 5.0.3 创建游戏项目

根据虚幻官网介绍&#xff0c;虚幻引擎5可免费用于创建线性内容、定制项目和内部项目。你可以免费用它开发游戏&#xff0c;只有当你的产品营收超过100万美元时&#xff0c;才收取5%的分成费用。所以目前国内也有许多游戏厂商在使用UE制作游戏。UE5源码也已开源&#xff0c;有U…

[数据集][目标检测]吸烟检测数据集VOC+YOLO格式1449张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1449 标注数量(xml文件个数)&#xff1a;1449 标注数量(txt文件个数)&#xff1a;1449 标注…

huggingface笔记:LLama 2

1 前提tip 1.1 使用什么数据类型训练模型&#xff1f; Llama2模型是使用bfloat16训练的 上传到Hub的检查点使用torch_dtype float16&#xff0c;这将通过AutoModel API将检查点从torch.float32转换为torch.float16。在线权重的数据类型通常无关紧要&#xff0c;这是因为模型…

机器学习300问】95、什么是KNN算法?它和K-means什么关系?

一、KNN算法的定义 KNN&#xff08;K-Nearest Neighbors&#xff09;算法&#xff0c;是一种简单而有效的监督学习方法。它既可以用在分类任务&#xff0c;也可用在回归任务中。KNN算法的核心思想&#xff1a;在特征空间中&#xff0c;如果有一个数据点周围的大多数邻居属于某个…

5. JVM面试题汇总

Java全栈面试题汇总目录-CSDN博客 1. 说一下JVM的主要组成部分及其作用? JVM包含两个子系统和两个组件&#xff0c;两个子系统为Class loader(类装载)、Execution engine(执行引擎)&#xff1b;两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Cl…

linux mail命令及其历史

一、【问题描述】 最近隔壁组有人把crontab删了&#xff0c;crontab这个命令有点反人类&#xff0c;它的参数特别容易误操作&#xff1a; crontab - 是删除计划表 crontab -e 是编辑&#xff0c;总之就是特别容易输入错误。 好在可以通过mail命令找回&#xff0c;但是mai…

【计算机网络】初识Tcp协议

&#x1f4bb;文章目录 &#x1f4c4;前言Tcp基础概念Tcp 的报文格式三次握手四次挥手 Tcp的滑动窗口机制概念超时重传机制高速重传 TCP传输控制机制流量控制拥堵控制慢启动 Tcp的性能优化机制延迟应答捎带应答 &#x1f4d3;总结 &#x1f4c4;前言 TCP三次握手、四次挥手&…

Java刷题总结(面试)

1、String类 String不可变 java 中String是 immutable的&#xff0c;也就是不可变&#xff0c;一旦初始化&#xff0c;其引用指向的内容是不可变的。 也就是说&#xff0c;String str “aa”&#xff1b;str“bb”&#xff1b;第二句不是改变“aa”所存储地址的内容&#xf…

Overleaf是什么?如何升级到标准版OR专业版?

1. Overleaf介绍 Overleaf是一个使用LaTeX进行多人协同编辑的平台&#xff0c;可以免费注册和使用&#xff0c;不用下载LaTeX软件&#xff0c;是最为著名的LaTeX在线协作系统。 主要特色是有LaTeX插件&#xff0c;编辑功能十分完善&#xff0c;有实时预览&#xff08;即编即看…

Java 使用继承和重写父类方法写一个商品入库案例

package 练习.商品入库;import java.util.Scanner; // 抽象手机类 public abstract class Phone {//测试方法public static void main(String[] args){// 华为手机huawei h new huawei();h.setName("华为P40");h.setPrice(1999.99);h.setConfiguration("8128GB…

【排名公布】绵阳男科医院排名发布,绵阳高水男科医院究竟咋样啊?

【排名公布】绵阳男科医院排名发布&#xff0c;绵阳高水男科医院究竟咋样啊&#xff1f; 绵阳高水医院&#xff0c;是一家医保定点单位&#xff0c;地址位于绵阳市涪城区长虹大道北段113号。一所与国际接轨的现代化男子医院&#xff0c;有良好地就医环境,拥有多名有经验的专家…

基于Tensorflow实现了三个模型对MNIST数据集的识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 MNIST手写数字数据集是计算机视觉和机器学习领域的一个经典数据集&#xff0c;常用于评估图像…

攻防世界-mobile-easy-app详解

序言 这道题网上很多分析&#xff0c;但是分析的都是arm版本的&#xff0c;我选了arm64的来分析&#xff0c;arm64相比arm难度高一些&#xff0c;因为arm64编译器搞了inline优化&#xff0c;看起来略抽象 分析 这道题逻辑很简单&#xff0c;输入flag然后一个check函数验证&a…

改进rust代码的35种具体方法-类型(十八)-不要惊慌

上一篇文章 它看起来非常复杂&#xff0c;这就是为什么它贴合的塑料盖上用大号友好字母印上“不要恐慌”的原因之一。——道格拉斯亚当斯 此项目的标题将更准确地描述为更喜欢返回Result而不是使用panic!&#xff08;但不要惊慌更吸引人&#xff09;。 Rust的panic机制主要是为…

算法入门----小话算法(1)

下面就首先从一些数学问题入手。 Q1&#xff1a; 如何证明时间复杂度O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!) < O(NN)? A&#xff1a; 如果一个以整数为参数的不等式不能很容易看出不等的关系&#xff0c;那么最好用图示或者数学归纳法。 很显…

Python3 笔记:sort() 和 sorted() 的区别

1、sort() 可以对列表中的元素进行排序&#xff0c;会改变原列表&#xff0c;之前的顺序不复存在。 list.sort&#xff08;key&#xff0c; reverse None&#xff09; key&#xff1a;默认值是None&#xff0c;可指定项目进行排序&#xff0c;此参数可省略。 reverse&#…

rmxprt转换的3D模型只有一半?---模大狮模型网

在3D建模和渲染的工作流程中&#xff0c;我们经常需要用到各种转换工具来兼容不同平台或软件之间的模型格式。rmxprt(或其他类似的模型转换工具)就是其中的一种&#xff0c;它能够将模型从一种格式转换为另一种格式。然而&#xff0c;有时在转换过程中可能会遇到一些问题&#…

微服务雪崩问题、Sentinel(请求限流、线程隔离、服务熔断)、Seata分布式事务

文章目录 前言一、微服务保护二、Sentinel2.1 微服务整合2.2 簇点链路2.3 请求限流2.4 线程隔离2.5 服务熔断 三、分布式事务3.1 Seata3.1.1 Seata架构3.1.2 部署TC服务3.1.3 微服务集成Seata 3.2 XA模式3.3 AT模式 前言 微服务之间为什么会雪崩&#xff1f;怎么解决雪崩问题&…

Oracle体系结构初探:数据库启动与停止

往期内容 参数管理 控制文件添加 启动 在启动Oracle数据库时&#xff0c;我们一般会使用如下命令&#xff1a; startup 虽然命令只有一个&#xff0c;但其中却是经历了3个阶段&#xff0c;从下面执行 startup 命令返回也可以看出来。 总结为3个阶段&#xff1a; nomount&…