Mysql存儲例程、存儲過程和存儲函數(shù)

參考官方給出的:https://dev.mysql.com/doc/refman/8.0/en/stored-routines.html
Mysql的在線演示平臺:http://mysqltutorial.org//tryit/

Mysql支持存儲例程(Stored Routines)。存儲例程是一系列保存在Mysql服務器上的SQL語句集合。一旦存儲例程被創(chuàng)建,客戶端不需要再編寫單獨的SQL語句,而是,可以直接調(diào)用存儲例程。存儲例程包含了存儲過程(Stored Procedures)和存儲函數(shù)(Stored Functions)。

再某些場景下使用存儲例程:
(1) 當在不同的平臺上,多語言編寫的多客戶端,執(zhí)行相同的數(shù)據(jù)庫操作的時候;
(2) 當安全至上的時候,比如銀行,會使用存儲過程和函數(shù)替代所有的通用操作。這樣會提供一個一致和安全的環(huán)境,存儲例程會日志記錄下每一個操作。用戶和應用程序?qū)⒉荒苤苯釉L問數(shù)據(jù)庫表,而只能執(zhí)行特定的存儲例程。


存儲過程的優(yōu)點

1 可以避免開發(fā)人員重復的編寫相同的SQL語句。
2 存儲過程和函數(shù)是在Mysql服務器中存儲和執(zhí)行的,可以減少客戶端和服務器端的數(shù)據(jù)傳輸。
3 可以復用

存儲過程的缺點

1 占用CPU
2

加載樣本數(shù)據(jù)到Mysql中;

創(chuàng)建存儲過程

存儲過程的創(chuàng)建是通過SQL關(guān)鍵字create procedure
比如,在產(chǎn)品表上創(chuàng)建一個名稱為——GetAllProducts的存儲過程。該存儲過程主要實現(xiàn)的功能是獲取產(chǎn)品表——products中的全部產(chǎn)品。具體的SQL如下:

DELIMITER //
 CREATE PROCEDURE GetAllProducts()
   BEGIN
   SELECT *  FROM products;
   END //
 DELIMITER ;

以上是在mysql的控制臺客戶端執(zhí)行的命令。如果有圖形化的客戶端,如Mysql Workbench,可以直接在里面點擊創(chuàng)建存儲過程。

存儲過程的變量

需要知道如何聲明和使用存儲過程的變量,另外,還需要了解變量生命范圍。

變量的聲明

語法如下:

declare variable_name datatype(size) default default_value

變量的賦值

有兩種方式:set和select into

變量的范圍

  • 如果在存儲過程中聲明的變量,則其在整個存儲過程中都有用的;
  • 如果在Begin End中聲明的,則只在當前的聲明中有用。
  • 如果聲明的時候添加了@標志,則在Session結(jié)束之前都有用的;

變量做什么用

存儲過程的參數(shù)

參數(shù)的聲明

參數(shù)的作用

參數(shù)的使用

創(chuàng)建函數(shù)

定義條件和處理程序

變量的使用

光標的使用

查看存儲過程和函數(shù)

調(diào)用存儲過程和函數(shù)

修改存儲過程和函數(shù)

刪除存儲過程和函數(shù)

參考

視頻地址:http://www.phpxs.com/post/2740/
國外的一篇詳細介紹Mysql存儲過程的:http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容