這篇文章主要介紹“MySQL存儲(chǔ)過程怎么創(chuàng)建”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“mysql存儲(chǔ)過程怎么創(chuàng)建”文章能幫助大家解決問題。
云城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
在mysql中,可以利用“CREATE PROCEDURE”語句創(chuàng)建存儲(chǔ)過程,語法為“CREATE PROCEDURE 過程名 過程參數(shù) 過程體 過程參數(shù) 格式 [IN|OUT|INOUT] 參數(shù)名 類型”。
本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
SQL語句需要先編譯然后執(zhí)行,而存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中,用戶通過指定存儲(chǔ)過程的名字并給定參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來調(diào)用執(zhí)行它。
存儲(chǔ)過程是可編程的函數(shù),在數(shù)據(jù)庫中創(chuàng)建并保存,可以由SQL語句和控制結(jié)構(gòu)組成。當(dāng)想要在不同的應(yīng)用程序或平臺上執(zhí)行相同的函數(shù),或者封裝特定功能時(shí),存儲(chǔ)過程是非常有用的。數(shù)據(jù)庫中的存儲(chǔ)過程可以看做是對編程中面向?qū)ο蠓椒ǖ哪M,它允許控制數(shù)據(jù)的訪問方式。
存儲(chǔ)過程的優(yōu)點(diǎn):
(1).增強(qiáng)SQL語言的功能和靈活性:存儲(chǔ)過程可以用控制語句編寫,有很強(qiáng)的靈活性,可以完成復(fù)雜的判斷和較復(fù)雜的運(yùn)算。
(2).標(biāo)準(zhǔn)組件式編程:存儲(chǔ)過程被創(chuàng)建后,可以在程序中被多次調(diào)用,而不必重新編寫該存儲(chǔ)過程的SQL語句。而且數(shù)據(jù)庫專業(yè)人員可以隨時(shí)對存儲(chǔ)過程進(jìn)行修改,對應(yīng)用程序源代碼毫無影響。
(3).較快的執(zhí)行速度:如果某一操作包含大量的Transaction-SQL代碼或分別被多次執(zhí)行,那么存儲(chǔ)過程要比批處理的執(zhí)行速度快很多。因?yàn)榇鎯?chǔ)過程是預(yù)編譯的。在首次運(yùn)行一個(gè)存儲(chǔ)過程時(shí)查詢,優(yōu)化器對其進(jìn)行分析優(yōu)化,并且給出最終被存儲(chǔ)在系統(tǒng)表中的執(zhí)行計(jì)劃。而批處理的Transaction-SQL語句在每次運(yùn)行時(shí)都要進(jìn)行編譯和優(yōu)化,速度相對要慢一些。
(4).減少網(wǎng)絡(luò)流量:針對同一個(gè)數(shù)據(jù)庫對象的操作(如查詢、修改),如果這一操作所涉及的Transaction-SQL語句被組織進(jìn)存儲(chǔ)過程,那么當(dāng)在客戶計(jì)算機(jī)上調(diào)用該存儲(chǔ)過程時(shí),網(wǎng)絡(luò)中傳送的只是該調(diào)用語句,從而大大減少網(wǎng)絡(luò)流量并降低了網(wǎng)絡(luò)負(fù)載。
(5).作為一種安全機(jī)制來充分利用:通過對執(zhí)行某一存儲(chǔ)過程的權(quán)限進(jìn)行限制,能夠?qū)崿F(xiàn)對相應(yīng)的數(shù)據(jù)的訪問權(quán)限的限制,避免了非授權(quán)用戶對數(shù)據(jù)的訪問,保證了數(shù)據(jù)的安全。
MySQL的存儲(chǔ)過程
存儲(chǔ)過程是數(shù)據(jù)庫的一個(gè)重要的功能,MySQL 5.0以前并不支持存儲(chǔ)過程,這使得MySQL在應(yīng)用上大打折扣。好在MySQL 5.0開始支持存儲(chǔ)過程,這樣即可以大大提高數(shù)據(jù)庫的處理速度,同時(shí)也可以提高數(shù)據(jù)庫編程的靈活性。
MySQL存儲(chǔ)過程的創(chuàng)建
語法
CREATE PROCEDURE 過程名([[IN|OUT|INOUT] 參數(shù)名 數(shù)據(jù)類型[,[IN|OUT|INOUT] 參數(shù)名 數(shù)據(jù)類型…]]) [特性 ...] 過程體
DELIMITER // CREATE PROCEDURE myproc(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM students; END // DELIMITER ;
分隔符
MySQL默認(rèn)以";"為分隔符,如果沒有聲明分割符,則編譯器會(huì)把存儲(chǔ)過程當(dāng)成SQL語句進(jìn)行處理,因此編譯過程會(huì)報(bào)錯(cuò),所以要事先用“DELIMITER //”聲明當(dāng)前段分隔符,讓編譯器把兩個(gè)"http://"之間的內(nèi)容當(dāng)做存儲(chǔ)過程的代碼,不會(huì)執(zhí)行這些代碼;“DELIMITER ;”的意為把分隔符還原。
參數(shù)
存儲(chǔ)過程根據(jù)需要可能會(huì)有輸入、輸出、輸入輸出參數(shù),如果有多個(gè)參數(shù)用","分割開。MySQL存儲(chǔ)過程的參數(shù)用在存儲(chǔ)過程的定義,共有三種參數(shù)類型,IN,OUT,INOUT:
IN參數(shù)的值必須在調(diào)用存儲(chǔ)過程時(shí)指定,在存儲(chǔ)過程中修改該參數(shù)的值不能被返回,為默認(rèn)值
OUT:該值可在存儲(chǔ)過程內(nèi)部被改變,并可返回
INOUT:調(diào)用時(shí)指定,并且可被改變和返回
過程體
過程體的開始與結(jié)束使用BEGIN與END進(jìn)行標(biāo)識。
關(guān)于“mysql存儲(chǔ)過程怎么創(chuàng)建”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識點(diǎn)。