欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL數(shù)據(jù)庫實(shí)驗(yàn)之?觸發(fā)器和存儲過程

 更新時(shí)間:2022年06月20日 14:35:53   作者:Code_流蘇  
這篇文章主要介紹了MySQL數(shù)據(jù)庫實(shí)驗(yàn)之?觸發(fā)器和存儲過程,通過掌握某主流DBMS支持的SQL編程語言和編程規(guī)范,規(guī)范設(shè)計(jì)存儲過程展開詳細(xì)介紹,感興趣的朋友可以參考一下

觀前提示:本篇內(nèi)容為mysql數(shù)據(jù)庫實(shí)驗(yàn),代碼內(nèi)容經(jīng)測試過,可能一小部分有所疏漏,也有會不符合每個(gè)人實(shí)驗(yàn)的要求的地方,因此以下內(nèi)容建議僅做思路參考。

一、實(shí)驗(yàn)?zāi)康?/h2>
  • 1、掌握某主流DBMS支持的SQL編程語言和編程規(guī)范,規(guī)范設(shè)計(jì)存儲過程;
  • 2、能夠理解不同類型觸發(fā)器的作用和執(zhí)行原理,驗(yàn)證觸發(fā)器的有效性;
  • 3、培養(yǎng)學(xué)生的系統(tǒng)思維,提升解決復(fù)雜工程問題所需的編程能力。

二、實(shí)驗(yàn)要求

掌握某主流DBMS的SQL編程語言,在前面創(chuàng)建的數(shù)據(jù)庫基礎(chǔ)上,定義BEFORE(for)觸發(fā)器和AFTER觸發(fā)器;掌握數(shù)據(jù)庫存儲過程定義、存儲過程運(yùn)行,存儲過程更名,存儲過程刪除,存儲過程的參數(shù)傳遞。

溫馨提示:以下內(nèi)容均已經(jīng)過測試,不過難免會有疏漏,但是代碼實(shí)現(xiàn)大多數(shù)思路及實(shí)現(xiàn)經(jīng)測驗(yàn)都是正確的。

三、實(shí)現(xiàn)內(nèi)容及步驟

1、創(chuàng)建一個(gè)不帶參數(shù)的簡單存儲過程

  • (1)創(chuàng)建存儲過程sp_avggrade,實(shí)現(xiàn)查詢每門課程學(xué)生的平均成績的功能;
delimiter//
CREATE PROCEDURE sp_avggrade()
COMMENT '查詢每門課程學(xué)生的平均成績的功能'
BEGIN
SELECT cno as 課程號,avg(grade)as 平均成績
FROM sc
GROUP BY cno;
end//
delimiter;

(2)調(diào)用該存儲過程,實(shí)現(xiàn)查詢。

call sp_avggrade();

2、創(chuàng)建一個(gè)帶輸入?yún)?shù)的存儲過程

(1)創(chuàng)建存儲過程sp_course_avggrade, 實(shí)現(xiàn)通過輸入課程編號參數(shù)查詢指定課程編號的課程平均成績的功能;

delimiter//
CREATE PROCEDURE sp_course_avggrade(IN c_no CHAR(2))
COMMENT '通過輸入課程編號參數(shù)查詢指定課程編號的課程平均成績的功能'
BEGIN
SELECT cno,AVG(grade)
FROM sc
WHERE cno=c_no;
END//
delimiter;

(2)調(diào)用該存儲過程,獲取指定課程的平均成績。

3、創(chuàng)建一個(gè)帶輸入輸出參數(shù)的存儲過程

(1)創(chuàng)建存儲過程sp_sdept _student,實(shí)現(xiàn)根據(jù)用戶輸入的院系編號參數(shù),查找該學(xué)院的學(xué)生人數(shù),并以變量形式輸出的功能;

delimiter//
CREATE PROCEDURE sp_sdept_student2(IN _sdept CHAR(10),OUT num int)
BEGIN
SELECT COUNT(sno) INTO num
FROM student
WHERE _sdept = sdept;
END//
delimiter;

(2)調(diào)用該存儲過程,以返回變量的形式獲取相應(yīng)院系的學(xué)生人數(shù)。

SET @num=10;
CALL sp_sdept_student2('計(jì)科',@num);
SELECT @num AS '人數(shù)';

4、觸發(fā)器的創(chuàng)建與使用

(1)在學(xué)生表上創(chuàng)建觸發(fā)器,實(shí)現(xiàn)學(xué)生表中刪除學(xué)生記錄時(shí),成績表中該學(xué)生成績記錄的級聯(lián)刪除;

delimiter//
CREATE TRIGGER delete_stu
BEFORE DELETE
ON student
FOR EACH ROW
BEGIN
DELETE
FROM sc
WHERE sc.sno=old.sno;
END//
delimiter;

(2)在選課表上創(chuàng)建觸發(fā)器,若錄入的成績大于100分,小于0分,則拒絕插入記錄并顯示;

delimiter//
CREATE TRIGGER scgrade
BEFORE INSERT ON sc
FOR EACH ROW
BEGIN
IF new.grade>100 or new.grade < 0 THEN
SIGNAL SQLSTATE '45000'
SET message_text='錄入成績不符合規(guī)定,拒絕插入';
END IF;
END//
delimiter;

(3)驗(yàn)證(1)、(2)中觸發(fā)器

驗(yàn)證(1)

DELETE
FROM student
WHERE sno='201513';

驗(yàn)證(2)

INSERT INTO sc(sno,cno,grade)
VALUES('2002720','1',200);

四、實(shí)驗(yàn)總結(jié)

  • 1、通過本次實(shí)驗(yàn),對存儲過程和觸發(fā)器有了更深的認(rèn)識;
  • 2、能夠理解不同類型觸發(fā)器的作用和執(zhí)行原理, 驗(yàn)證了觸發(fā)器的有效性;
  • 3、熟練掌握了數(shù)據(jù)庫存儲過程定義、存儲過程運(yùn)行,存儲過程更名,存儲過程刪除,存儲過程的參數(shù)傳遞。

到此這篇關(guān)于MySQL數(shù)據(jù)庫實(shí)驗(yàn)之 觸發(fā)器和存儲過程的文章就介紹到這了,更多相關(guān)MySQ存儲過程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳細(xì)講解如何查看mysql里面的鎖

    一文詳細(xì)講解如何查看mysql里面的鎖

    鎖是MySQL里面最難理解的知識,但是又無處不在,下面這篇文章主要給大家介紹了關(guān)于關(guān)于如何查看mysql里面鎖的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • wamp中mysql安裝時(shí)能啟動(dòng)重啟后無法啟動(dòng)的解決辦法

    wamp中mysql安裝時(shí)能啟動(dòng)重啟后無法啟動(dòng)的解決辦法

    這篇文章主要介紹了wamp中mysql安裝時(shí)能啟動(dòng)重啟后無法啟動(dòng)的解決辦法 ,需要的朋友可以參考下
    2018-08-08
  • win10 mysql導(dǎo)出csv的兩種方式

    win10 mysql導(dǎo)出csv的兩種方式

    win10導(dǎo)出csv有兩種方式,第一種是借助工具,第二種是原始SQL語句導(dǎo)出,這篇文章主要介紹了win10 mysql導(dǎo)出csv的兩種方式,需要的朋友可以參考下
    2019-12-12
  • MySQL數(shù)據(jù)時(shí)區(qū)問題以及datetime和timestamp類型存儲的差異

    MySQL數(shù)據(jù)時(shí)區(qū)問題以及datetime和timestamp類型存儲的差異

    這篇文章主要介紹了MySQL數(shù)據(jù)時(shí)區(qū)問題以及datetime和timestamp類型存儲的差異,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 深入分析MySQL 的備份和恢復(fù)機(jī)制

    深入分析MySQL 的備份和恢復(fù)機(jī)制

    備份對于數(shù)據(jù)庫來說是相當(dāng)重要的工作。如果數(shù)據(jù)庫在使用過程中出現(xiàn)了問題,比如系統(tǒng)崩潰、硬件故障或錯(cuò)誤的刪除了數(shù)據(jù)。這時(shí),如果我們進(jìn)行了數(shù)據(jù)備份,就能比較方便的使數(shù)據(jù)庫恢復(fù)工作,并使我們的數(shù)據(jù)損失到最小。下面我們來詳細(xì)探討下數(shù)據(jù)庫的備份與恢復(fù)。
    2016-11-11
  • mysql啟動(dòng)失敗之mysql服務(wù)無法啟動(dòng)(服務(wù)沒有報(bào)告任何錯(cuò)誤)的解決方法

    mysql啟動(dòng)失敗之mysql服務(wù)無法啟動(dòng)(服務(wù)沒有報(bào)告任何錯(cuò)誤)的解決方法

    作為一名程序猿,必不可少的便是和mysql打交道,那當(dāng)mysql故障,服務(wù)無法啟動(dòng)時(shí)該怎么解決呢,下面這篇文章主要給大家介紹了關(guān)于mysql啟動(dòng)失敗之mysql服務(wù)無法啟動(dòng),服務(wù)沒有報(bào)告任何錯(cuò)誤的解決方法,需要的朋友可以參考下
    2022-05-05
  • MySQL表的增刪改查(CRUD)

    MySQL表的增刪改查(CRUD)

    這篇文章主要介紹了如何對數(shù)據(jù)庫增刪改查,想要更全面了解的小伙伴,可以詳細(xì)閱讀本文
    2023-03-03
  • 在MAC OS X上安裝MYSQL

    在MAC OS X上安裝MYSQL

    MAC系統(tǒng)自帶apache和php,但是沒有mysql,那么我們只好自力更生了,經(jīng)過一番研究,借鑒網(wǎng)上一位大神的文章,終于成功安裝上了mysql,這里推薦給有需要的朋友
    2014-10-10
  • MySQL 句柄數(shù)占用過多的解決方法

    MySQL 句柄數(shù)占用過多的解決方法

    本文主要介紹解決MySQL句柄占用過多的方法,簡單實(shí)用,需要的朋友可以參考下。
    2016-05-05
  • MySQL5.7.21解壓版安裝詳細(xì)教程圖解

    MySQL5.7.21解壓版安裝詳細(xì)教程圖解

    對于小編來說安裝系統(tǒng)軟件是常干的事情,今天小編抽空給大家整理了MySQL5.7.21解壓版安裝詳細(xì)教程圖解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-09-09

最新評論