MySQL存儲過程_觸發器_游標——Baidu Comate

# 問題1:?

幫我創建2個表student與score表,要求student表有id,createDate,userName,phone,age,sex,introduce,
要求score表有id,scoreName,result,studentId(student表的id外鍵)。
要求student表中插入5條學生信息,都要是中文的。
要求score表中對應studentId插入10條信息,每個學生ID要有2個科目的成績。
給出DDL與DML語句。

DDL+DML

CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,createDate DATE NOT NULL,userName VARCHAR(255) NOT NULL,phone VARCHAR(20) NOT NULL,age INT NOT NULL,sex ENUM('男', '女') NOT NULL,introduce TEXT
);CREATE TABLE score (id INT PRIMARY KEY AUTO_INCREMENT,scoreName VARCHAR(255) NOT NULL,result FLOAT NOT NULL,studentId INT,FOREIGN KEY (studentId) REFERENCES student(id) ON DELETE CASCADE
);
INSERT INTO student (createDate, userName, phone, age, sex, introduce) VALUES
('2023-04-01', '張三', '13800138000', 20, '男', '學習刻苦'),
('2023-04-02', '李四', '13800138001', 21, '女', '成績優異'),
('2023-04-03', '王五', '13800138002', 22, '男', '熱愛運動'),
('2023-04-04', '趙六', '13800138003', 20, '女', '文靜內向'),
('2023-04-05', '孫七', '13800138004', 21, '男', '樂于助人');-- 張三的成績
INSERT INTO score (scoreName, result, studentId) VALUES ('數學', 90, 1);
INSERT INTO score (scoreName, result, studentId) VALUES ('英語', 85, 1);-- 李四的成績
INSERT INTO score (scoreName, result, studentId) VALUES ('數學', 88, 2);
INSERT INTO score (scoreName, result, studentId) VALUES ('物理', 92, 2);-- 王五的成績
INSERT INTO score (scoreName, result, studentId) VALUES ('英語', 80, 3);
INSERT INTO score (scoreName, result, studentId) VALUES ('化學', 85, 3);-- 趙六的成績
INSERT INTO score (scoreName, result, studentId) VALUES ('物理', 95, 4);
INSERT INTO score (scoreName, result, studentId) VALUES ('化學', 89, 4);-- 孫七的成績
INSERT INTO score (scoreName, result, studentId) VALUES ('英語', 78, 5);
INSERT INTO score (scoreName, result, studentId) VALUES ('生物', 87, 5);

提問的時候一定要選中兩個DDL?

# 問題2:?

根據score表的DDL添加4條語句,要求studentId為3和4,每個studentId都添加兩條數據,科目是數學與英語。

 
-- 插入studentId為3的數學成績
INSERT INTO score (scoreName, result, studentId) VALUES ('數學', 95, 3);-- 插入studentId為3的英語成績
INSERT INTO score (scoreName, result, studentId) VALUES ('英語', 89, 3);-- 插入studentId為4的數學成績
INSERT INTO score (scoreName, result, studentId) VALUES ('數學', 92, 4);-- 插入studentId為4的英語成績
INSERT INTO score (scoreName, result, studentId) VALUES ('英語', 86, 4);

# 問題3:?

幫我創建一個多表聯合查詢以student為主表,查看學生的所有科目成績總分,并根據總分進行倒序排名,在查詢第一列添加排名順序。

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

這條SQL語句的解釋如下:

SELECT 用來指定你想從數據庫中獲取的字段。

s.id AS studentId 選擇student表的id字段,并在結果集中將其重命名為studentId。

s.userName 選擇student表的userName字段,表示學生的名字。

SUM(sc.result) AS totalScore 計算每個學生所有科目的成績總和,并將這個總和重命名為totalScore。這里使用了SUM聚合函數來對成績進行求和。

FROM student s 指定了主表為student,并給它設置了一個別名s,以便在查詢中簡化引用。

LEFT JOIN score sc ON s.id = sc.studentId 使用了左連接(LEFT JOIN)來聯合score表,并給它設置了一個別名sc。連接條件是兩個表中的studentId必須匹配。左連接確保即使某個學生在score表中沒有成績記錄,也會出現在結果集中,其成績總分將被計算為0。

GROUP BY s.id, s.userName 將結果集按照每個學生的id和userName進行分組,這是使用聚合函數(如SUM)時通常需要的,以確保每個學生的成績不會被混淆在一起。

執行這條SQL語句后,你將得到一個包含每個學生ID、用戶名和所有科目成績總分的列表。

?

# 問題4:存儲過程?

幫我根據兩個DDL創建一個插入信息的存儲過程,先插入10條學生信息,再根據插入的學生表信息插入100條對應的studentId的score成績,
所有信息隨機生成,學生表的自增序號從6開始。

調用

call InsertRandomData();?

# 問題5:觸發器?

幫我創建一個修改score表scoreName的觸發器,當修改scoreName的時候觸發,判斷修改的scoreName是否是數學,如果是數學就改成(天書)。
并且給出測試事例。

這個觸發器tr_before_update_scoreName會在score表上的UPDATE操作之前執行。當scoreName字段的新值(NEW.scoreName)是"數學"時,它會自動將scoreName的值改為"天書"。

測試示例
為了測試這個觸發器,你可以按照以下步驟操作:

? 1.插入測試數據


首先,向score表中插入一些測試數據,包括一個scoreName為"數學"的記錄。

INSERT INTO score (scoreName, result, studentId) VALUES ('數學', 90, 1);
INSERT INTO score (scoreName, result, studentId) VALUES ('英語', 85, 1);


? 1.執行更新操作

UPDATE score SET scoreName = '數學' WHERE id = 1;


接下來,嘗試更新score表中scoreName為"數學"的記錄

由于觸發器的存在,即使你嘗試將scoreName設置為"數學",它實際上會被自動更改為"天書"。

? 1.驗證結果
最后,通過查詢來驗證觸發器是否按預期工作。

SELECT * FROM score WHERE id = 1;

你應該會看到類似下面的結果,其中scoreName字段的值已經被更改為"天書":

id | scoreName | result | studentId---|-----------|--------|----------
1  | 天書      | 90     | 1

?這樣,你就成功地創建并測試了一個修改scoreName字段的觸發器。

# 問題6:游標?

創建一個兩個表的綜合游標查詢,要求根據學生姓名進行查詢,查詢的結果返回兩個表的綜合信息。

DELIMITER //CREATE PROCEDURE GetStudentInfoByName(IN targetName VARCHAR(255))
BEGINDECLARE done INT DEFAULT FALSE;DECLARE stu_id INT;DECLARE stu_createDate DATE;DECLARE stu_userName VARCHAR(255);DECLARE stu_phone VARCHAR(20);DECLARE stu_age INT;DECLARE stu_sex ENUM('男', '女');DECLARE stu_introduce TEXT;DECLARE sc_id INT;DECLARE sc_scoreName VARCHAR(255);DECLARE sc_result FLOAT;-- 聲明游標DECLARE cur_student INFORMATION_SCHEMA.ROUTINES.RESULT_TYPE IS NOT NULL CURSOR FOR SELECT s.id, s.createDate, s.userName, s.phone, s.age, s.sex, s.introduce, sc.id AS score_id, sc.scoreName, sc.resultFROM student sLEFT JOIN score sc ON s.id = sc.studentIdWHERE s.userName = targetName;-- 聲明NOT FOUND的處理DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;OPEN cur_student;read_loop: LOOPFETCH cur_student INTO stu_id, stu_createDate, stu_userName, stu_phone, stu_age, stu_sex, stu_introduce, sc_id, sc_scoreName, sc_result;IF done THENLEAVE read_loop;END IF;-- 這里可以處理每一行的數據,例如打印或存儲等。SELECT stu_id, stu_createDate, stu_userName, stu_phone, stu_age, stu_sex, stu_introduce, sc_id, sc_scoreName, sc_result;END LOOP;CLOSE cur_student;
END //DELIMITER ;

調用游標

CALL GetStudentInfoByName('張三');

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13739.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

onload和onunload有什么區別(代碼舉例說明)

onload 和 onunload 是兩種常用于網頁中的事件處理器(event handlers),但它們處理的是完全不同的頁面生命周期事件。 onload onload 事件會在頁面或指定的元素(如圖片、框架等)完成加載后觸發。對于頁面整體來說&…

樹莓派 Raspberry Pi M.2 HAT+ 現已發售!原理圖流出!

?Raspberry Pi M.2 HAT 使您能夠將 M.2 M-key 外設(如 NVMe 驅動器和人工智能加速器)連接到 Raspberry Pi 5。它能夠提供與這些外設之間的快數據傳輸(高達 500 MB/s),現在就可以從樹莓派的授權經銷商網絡購買&#xf…

c語言:strcmp

strcmp函數是用于比較兩個字符串的庫函數,其功能是根據ASCII值逐一對兩個字符串進行比較。 語法:strcmp(str1, str2) 返回值: 如果str1等于str2,則返回0。 如果str1小于str2,則返回負數(具體值取決于C…

注意力機制篇 | MSFE:即插即用的多尺度滑窗注意力(附源碼實現)

前言:Hello大家好,我是小哥談。多尺度滑窗注意力(Multi-Scale Sliding Window Attention,MSFE)是一種用于處理圖像的深度學習模型。它通過引入多尺度特征提取和滑窗注意力機制來提高圖像識別的準確性。在MSFE中,模型采用多尺度卷積神經網絡來提取圖像的特征,然后使用滑窗…

DELPHI通過WebService進行數據交互

WebService是一種可以跨語言和平臺的數據交互模式,使用非常廣泛,與JSon數據格式結合,更是當前非常流行的一種模式,本章針對DELPHI通過WebService進行數據的交互做一個相對簡單例子應用。 本文使用的DELPHI 版本為:DEL…

pdf文件怎么編輯?分享3個專業的pdf軟件!

在數字化時代,PDF文件已成為我們工作、學習中的得力助手。然而,面對需要修改的PDF文件,許多人卻感到無從下手。今天,就讓我們一起探索如何輕松編輯PDF文件,并介紹幾款實用的編輯軟件,讓你輕松應對各種PDF編…

創建型模式 (Python版)

單例模式 懶漢式 class SingleTon:# 類屬性_obj None # 用來存儲對象# 創造對象def __new__(cls, *args, **kwargs):# 如果對象不存在,就創造一個對象if cls._obj is None:cls._obj super().__new__(cls, *args, *kwargs)# 返回對象return cls._objif __name__…

OpenAI宮斗劇番外篇: “Ilya與Altman聯手對抗微軟大帝,掃除黑惡勢力”,“余華”和“莫言”犀利點評

事情是這樣的。 小編我是一個重度的智譜清言用戶,最近智譜清言悄悄上線了一個“劃詞引用”功能后,我仿佛打開了新世界的大門。我甚至用這個小功能,玩出來了即將為你上映的《OpenAI宮斗劇番外篇》。 3.5研究測試:hujiaoai.cn 4研…

@Controller和@RestController區別

一、Controller 注解: Controller 注解用于定義一個控制器類,通常配合 Spring MVC 框架使用。 控制器類負責處理用戶的 HTTP 請求,并將處理結果返回給客戶端。 控制器類中的方法通常通過 RequestMapping 或其衍生注解來映射特定的 URL 請求…

Python中的數據類型轉換

文章目錄 一、轉成整數形式二、轉成浮點數形式三、轉成字符串形式四、轉成列表形式五、轉成元祖形式六、json和字典轉換1.json轉字典2.字典轉json 一、轉成整數形式 使用int()方法,示例代碼如下: a 5201314 result int(a) print(result) print(type(…

藍牙Classic加密算法設計和實現,SAFER+,E0,E1,E2,E3(python)

概述 之前用python給大家實現了所有LE相關加密工具算法。bobwenstudy/BluetoothCryptographicToolbox: LE SMP加密算法設計和實現(python) (github.com),最近重溫了下Classic加密,順便將Classic所有加密算法給實現了一遍。 在藍牙Classic Spec中&#…

5.14.3 UNETR:用于 3D 醫學圖像分割的 Transformers

具有收縮和擴展路徑的全卷積神經網絡 (FCNN) 在大多數醫學圖像分割應用中表現出了突出的作用。在 FCNN 中,編碼器通過學習全局和局部特征以及上下文表示來發揮不可或缺的作用,這些特征和上下文表示可用于解碼器的語義輸出預測。 在FCNN中,收縮…

對列表進行統計和計算

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python的列表提供了內置的一些函數來實現統計、計算的功能。下面介紹幾種常用的功能。 (1)獲取指定元素出現的次數 使用列表…

數字水印 | 圖像標準化論文:Digital Watermarking Robust to Geometric Distortions(二)

目錄 C?變換參數的確定D?水印的影響E?可替代的標準化過程 🤖原文: Digital Watermarking Robust to Geometric Distortions 🤖前言: 這是一篇 2005 年的 SCI 一區 CCF-A,但是網上關于它的講解貌似挺少的。文中提出…

智能車競賽指南:從零到一,駛向自動駕駛的未來

智能車競賽指南:從零到一,駛向自動駕駛的未來 一、智能車競賽概覽1.1 競賽介紹1.2 競賽分類 二、智能車開發技術基礎2.1 硬件平臺2.2 軟件開發 三、實戰案例:循線小車開發3.1 系統架構3.2 代碼示例 四、技術項目:基于ROS的視覺導航…

FedSyn: Synthetic Data Generation using Federated Learning

arxiv2022,沒找到是哪個刊物的,是沒投中嗎? 這篇是用GAN做數據生成,每個client都訓練一個生成器,加噪聲傳到server端聚合,實驗是衡量生成圖片的質量。 論文地址:arxiv code:沒找到 貢獻 提出了提出了一種新穎的方法(FedSyn ),將聯邦學習、使用 GAN的合成數據生成…

高中數學:平面向量-數量積(向量與向量的乘積)與投影

一、引題 物理上的力做功 二、數量積與投影 1、數量積 θ的范圍是[0,π] 2、投影 向量的投影,依然是一個向量! 3、運算法則 易錯點: 4、重要性質 這里對性質(2)要注意一下:如果 a → \mathop{a}\limits ^{\rightarrow…

AWS安全性身份和合規性之Shield

shield:盾(牌);(保護機器和操作者的)護罩,防護屏,擋板;屏障;保護物;(警察的)盾形徽章;保護人;掩護物;盾形紋徽;盾形獎牌; AWS Shield是一項AWS托管的DDoS(Distributed Denial of Service,分布式…

建模:Maya

一、常用按鍵 1、alt 左鍵 —— 環繞查看 2、alt 中鍵 —— 拖動模型所在面板 3、空格 —— 進入三視圖模式;空格 左鍵按住拖動 —— 切換到對應視圖 二、骨骼歸零 1、T Pose 旋轉模式,點擊模型,擺好T姿勢即可 2、復制模型設置200距離…

[AIGC] Java CompletableFuture:簡介及示例

Java 8 引入了一個名為 CompletableFuture 的新庫,正如其名稱所示,該庫提供了一種名為 “Completable Future” 的新 API,其主要目的是支持異步編程,并通過可搜索的操作將這些異步操作進行聚合管控。 文章目錄 CompletableFuture …