溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mysql存儲過程定義及講析

發(fā)布時間:2020-04-28 10:08:12 來源:億速云 閱讀:391 作者:三月 欄目:系統(tǒng)運維

下文內(nèi)容主要給大家?guī)?a title="Mysql" target="_blank" href="http://kemok4.com/mysql/">Mysql存儲過程定義及講析,這里所講到的知識,與書籍略有不同,都是億速云專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗分享價值,希望給廣大讀者帶來幫助。

一、什么是mysql存儲過程?

是在數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過制定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。
存儲過程是經(jīng)過編譯的SQL語句集。編譯后節(jié)省很多性能。

二、為什么使用存儲過程?

1、存儲過程只在創(chuàng)造時進(jìn)行編譯,以后每次執(zhí)行存儲過程都不需要再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以存儲過程可以提高數(shù)據(jù)庫執(zhí)行速度
2、當(dāng)對數(shù)據(jù)庫進(jìn)行復(fù)雜操作時(如對多個表進(jìn)行UPDATE,INSERT,QUERY,DELETE時),可將此復(fù)雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用,這些操作如果用程序來完成,就變成一條條的SQL語句,可能要多次鏈接數(shù)據(jù)庫,而換成存儲過程,只需要鏈接一次數(shù)據(jù)庫就可以了
3、存儲過程可以重復(fù)使用,可以減少數(shù)據(jù)庫開發(fā)人員的工作量
4、安全性高,可設(shè)定只有某些用戶才具有對指定存儲過程的使用權(quán)

三、存儲過程的缺點

Mysql存儲過程定義及講析

1、可移植性差
2、對于簡單的SQL語句,存儲過程沒什么優(yōu)勢
3、存儲過程中不一定會減少網(wǎng)絡(luò)傳輸
4、如果一個用戶使用數(shù)據(jù)庫,那么存儲過程對安全也沒什么影響
5、團(tuán)隊開發(fā)時需要統(tǒng)一標(biāo)準(zhǔn),否則后期維護(hù)起來麻煩
6、在大并發(fā)訪問量的情況下,不宜寫過多涉及運算的存儲過程
7、業(yè)務(wù)邏輯復(fù)雜時,特別是涉及到對很大的表進(jìn)行操作的時候,不如在前端先簡化業(yè)務(wù)邏輯

四、存儲過程和函數(shù)、觸發(fā)器的區(qū)別

1、觸發(fā)器用于完成一些觸發(fā)條件所引發(fā)的操作,觸發(fā)器的執(zhí)行是自動化的
2、自定義函數(shù)只能通過return語句返回單個值或者表對象,而存儲過程不能調(diào)用return語句,但可以通過out參數(shù)返回多個值。函數(shù)可以在SQL語句中結(jié)合使用,函數(shù)不能用臨時表,只能用表變量,還有一些系統(tǒng)函數(shù)都不可用
3、存儲過程用于完成一系列的SQL操作,批量的完成數(shù)據(jù)庫操作工作,由使用者調(diào)用執(zhí)行

五、存儲過程的創(chuàng)建

Mysql存儲過程定義及講析

解析:
1、寫mysql存儲過程,首先改變語句結(jié)束符,一般改成   //,因為存儲過程一般包含多條SQL語句,如果使用默認(rèn)結(jié)束符可能中斷SQL的運行
2、mysql> CREATE PROCEDURE存儲過程的固定語句,后面跟存儲過程的名稱,()里面包含(存儲過程的參數(shù)    參數(shù)名稱   數(shù)據(jù)類型)
3、BEGIN....END是存儲過程的開始和結(jié)束符號,中間是存儲過程的內(nèi)容
4、//結(jié)束,表示整個存儲過程的語句已經(jīng)書寫完畢
5、書寫完畢后將mysql的結(jié)束符改回成   ;
6、CALL加上存儲過程的名稱、參數(shù)來調(diào)用存儲過程

存儲過程的參數(shù)
格式:
CREATE  PROCEDURE 存儲過程名([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形...])

參數(shù)IN的特點:存儲過程運行時,讀取外部變量值,存儲過程完成后,其外部變量的值不發(fā)生改變,依然是存儲過程外部設(shè)定的變量值

參數(shù)OUT的特點:不讀取外部變量的值,存儲過程運行完成后,外部變量的值更新為存儲過程內(nèi)部的值
Mysql存儲過程定義及講析

Mysql存儲過程定義及講析

參數(shù)INOUT的特點:運行存儲過程時,讀取外部變量的值,存儲過程運行完成后,外部變量的值更新為存儲過程內(nèi)部的值
Mysql存儲過程定義及講析

Mysql存儲過程定義及講析

對于以上關(guān)于Mysql存儲過程定義及講析,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們億速云的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R更新。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI