參考官方給出的: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