最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

二、實驗要求

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

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

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

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

  • (1)創(chuàng)建存儲過程sp_avggrade,實現(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)用該存儲過程,實現(xiàn)查詢。

call sp_avggrade();

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

(1)創(chuàng)建存儲過程sp_course_avggrade, 實現(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)建一個帶輸入輸出參數(shù)的存儲過程

(1)創(chuàng)建存儲過程sp_sdept _student,實現(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('計科',@num);
SELECT @num AS '人數(shù)';

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

(1)在學(xué)生表上創(chuàng)建觸發(fā)器,實現(xiàn)學(xué)生表中刪除學(xué)生記錄時,成績表中該學(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)驗證(1)、(2)中觸發(fā)器

驗證(1)

DELETE
FROM student
WHERE sno='201513';

驗證(2)

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

四、實驗總結(jié)

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

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

相關(guān)文章

  • mysql忘記密碼重置的方法實現(xiàn)

    mysql忘記密碼重置的方法實現(xiàn)

    本文主要介紹了mysql忘記密碼重置的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 一臺電腦(windows系統(tǒng))安裝兩個版本MYSQL方法步驟

    一臺電腦(windows系統(tǒng))安裝兩個版本MYSQL方法步驟

    由于新舊項目數(shù)據(jù)庫版本差距太大,編碼格式不同,引擎也不同,所以只好裝兩個數(shù)據(jù)庫,這篇文章主要給大家介紹了關(guān)于一臺電腦(windows系統(tǒng))安裝兩個版本MYSQL的方法步驟,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • MySQL數(shù)據(jù)庫常用命令小結(jié)

    MySQL數(shù)據(jù)庫常用命令小結(jié)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫命令,主要包括對數(shù)據(jù)庫常用命令及數(shù)據(jù)庫中對表的命令,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • MySQL報錯Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

    MySQL報錯Expression #1 of SELECT list 

    這篇文章主要介紹了MySQL報錯Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Mysql子查詢IN中使用LIMIT應(yīng)用示例

    Mysql子查詢IN中使用LIMIT應(yīng)用示例

    有3張表,infor信息表,mconfig物料配置表,maaply物料申請表,要求是讀出申請表中哪些人申請哪些物料,接下來為大家介紹下Mysql子查詢IN中使用LIMIT
    2014-01-01
  • 通過ibd文件恢復(fù)MySql數(shù)據(jù)的操作方法

    通過ibd文件恢復(fù)MySql數(shù)據(jù)的操作方法

    文章介紹通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的過程,包括知道表結(jié)構(gòu)和不知道表結(jié)構(gòu)兩種情況,對于知道表結(jié)構(gòu)的情況,可以直接將.ibd文件復(fù)制到新的數(shù)據(jù)庫目錄并重啟MySQL,對于不知道表結(jié)構(gòu)的情況,可以使用ibd2sql工具生成對應(yīng)的SQL腳本,然后執(zhí)行該腳本恢復(fù)數(shù)據(jù),感興趣的朋友看看吧
    2025-03-03
  • MySQL查詢優(yōu)化:用子查詢代替非主鍵連接查詢實例介紹

    MySQL查詢優(yōu)化:用子查詢代替非主鍵連接查詢實例介紹

    對多的兩張表,一般是一張表的外鍵關(guān)聯(lián)到另一個表的主鍵,接下來為大家介紹下用子查詢代替非主鍵連接查詢,感興趣的朋友可以參考下哈,希望對你有所幫助
    2013-04-04
  • MySQL中刪除重復(fù)數(shù)據(jù)SQL的三種寫法

    MySQL中刪除重復(fù)數(shù)據(jù)SQL的三種寫法

    這篇文章主要介紹了MySQL中刪除重復(fù)數(shù)據(jù)SQL的三種寫法,文中通過代碼示例講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • MybatisPlus攔截器如何實現(xiàn)數(shù)據(jù)表分表

    MybatisPlus攔截器如何實現(xiàn)數(shù)據(jù)表分表

    為了解決MySQL中大數(shù)據(jù)量的查詢效率問題,采用水平拆分策略,通過取模運算確定表后綴,實現(xiàn)數(shù)據(jù)的有效管理,設(shè)計分表時,需利用線程變量存取請求參數(shù),并通過攔截器確定操作的具體表名,從而優(yōu)化數(shù)據(jù)處理性能,此方法適用于業(yè)務(wù)表數(shù)據(jù)量大或快速增長的場景
    2024-11-11
  • mysql中varchar和text的區(qū)別和比較

    mysql中varchar和text的區(qū)別和比較

    在存儲字符串時可以使用char、varchar或者text類型,下面這篇文章主要給大家介紹了關(guān)于mysql中varchar和text的區(qū)別和比較的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10

最新評論

化隆| 东至县| 洪江市| 菏泽市| 本溪市| 梅河口市| 义乌市| 吕梁市| 五大连池市| 阿坝县| 理塘县| 嘉善县| 汉川市| 巴林右旗| 海安县| 合作市| 北海市| 古蔺县| 三门县| 山阴县| 九江市| 三原县| 南康市| 隆昌县| 武清区| 准格尔旗| 满洲里市| 新余市| 晋江市| 海城市| 禹城市| 通江县| 武宣县| 阿克| 北宁市| 涟水县| 龙南县| 大丰市| 宣城市| 皋兰县| 铁岭市|