引入:
我們要實現對數據庫表的一個操作,實現這一個需要使用多條SQL語句進行操作。同時,這樣的操作在我的程序中是使用比較頻繁的。回想我們以前學習java的時候。我們需要需要完成一個特定的功能,而這一個功能使用的頻率比較多。那麼這一個時候我們是選用了把實現的代碼抽取出來,寫成一個方法,每當我需要實現這一個功能的時候就去調用這一個方法即可。那麼在數據庫中有沒有類似的操作呢?可以實現對一些特定的功能實現類似方法的操作?那麼就是存儲過程。
存儲過程概述
存儲過程概述
1.概述
所謂的存儲過程就是一組預先編譯好的SQL語句的集合,理解成批處理語句。
2.使用存儲過程的好處
(1)、提高代碼的重用性。
(2)、簡化操作。
(3)、減少了編譯次數並且減少了和數據庫服務器的連接次數,提高了效率。
存儲過程創建
存儲過程的創建
1.創建存儲過程語法:
CREATE PROCEDURE 存儲過程名(參數列表)
BEGIN
存儲過程體(一組合法的SQL語句)
END
2.創建過程注意事項
(1)、參數列表包含三部分
參數模式 參數名 參數類型
如:
in stuname varchar(20)
參數模式:
in:該參數可以作爲輸入,也就是該參數需要調用方傳入值
out:該參數可以作爲輸出,也就是該參數可以作爲返回值
inout:該參數既可以作爲輸入又可以作爲輸出,也就是該參數既需要傳入值,又可以返回值
(2)、使用注意事項
A:如果存儲過程體僅僅只有一句話,begin end可以省略。
B:存儲過程體中的每條sql語句的結尾要求必須加分號。
C 存儲過程的結尾可以使用 delimiter 重新設置
語法:
delimiter 結束標記
如:
delimiter $
存儲過程的調用
存儲過程的調用:
CALL 存儲過程名(實參列表);
類似於方法的調用。
存儲過程使用測試
1. 空參列表,存儲多條記錄(實際存儲過程在存儲多條記錄效果更佳),創建以及調用
創建測試使用數據庫表
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
創建存儲過程並調用
2.參數模式的基本使用,如使用帶'in'模式參數的存儲過程,傳入參數,找出其對應的值
表beauty
表boys
創建存儲過程並調用
3.out 模式參數的存儲過程,實現結果以及數據庫表如2
4.創建帶inout模式參數的存儲過程,實現傳入a和b兩個值,最終a和b都翻倍並返回
存儲過程的刪除操作
刪除存儲過程語法
語法:drop procedure 存儲過程名;
如:刪除存儲過程myp1;
查看存儲過程的相關信息
查看存儲過程的信息
語法:SHOW CREATE PROCEDURE 存儲過程名稱;
如:查看myp1存儲過程的相關信息