mysql数据库入门教程(13):存储过程
存儲過程
過程塊sql主要有兩種類型,幾命名塊和匿名塊。匿名塊每次執行時都要編譯,而且不能存儲到存儲過程中,也不能在其他過程化sql塊中調用,過程和函數時命名塊,他們在編譯時保存在數據庫中,成為持久型存儲模塊(Persistent Stored Module,PSM),可以被反復調用,運行速度較快。
存儲過程:簡單來說就是把一些函數封裝為中間文件,以后可以直接用,不用再編譯。必須在cmd中寫存儲過程函數。
得到的文件位置如下
#存儲過程和函數
/*
存儲過程和函數:類似于java中的方法
好處:
1、提高代碼的重用性
2、簡化操作
/
#存儲過程
/
含義:一組預先編譯好的SQL語句的集合,理解成批處理語句
1、提高代碼的重用性
2、簡化操作
3、減少了編譯次數并且減少了和數據庫服務器的連接次數,提高了效率
*/
一.創建語法
#語法:
delimiter 結束標記
CREATE PROCEDURE 存儲過程名(參數列表)
BEGIN
存儲過程體(一組合法的SQL語句)
END
#注意:
/*
1、參數列表包含三部分
參數模式 參數名 參數類型
舉例:
in stuname varchar(20)
參數模式:
in:該參數可以作為輸入,也就是該參數需要調用方傳入值
out:該參數可以作為輸出,也就是該參數可以作為返回值
inout:該參數既可以作為輸入又可以作為輸出,也就是該參數既需要傳入值,又可以返回值
2、如果存儲過程體僅僅只有一句話,begin end可以省略
存儲過程體中的每條sql語句的結尾要求必須加分號。
存儲過程的結尾可以使用 delimiter 重新設置
語法:
delimiter 結束標記
案例:
delimiter $
*/
二.調用語法
CALL 存儲過程名(實參列表);
三.算例
#1.空參列表
#案例:插入到admin表中五條記錄
算例資源,里面有我們需要的數據庫
個人mysql文件資源.zip
當然以下所有內容也可以在SQLyang中執行,我們在cmd中演示
第一步:
USE girls; #案例:插入到admin表中五條記錄 #查看 SELECT * FROM admin; 第二步:cmd 中輸入:DELIMITER $#必須有這一行
DELIMITER $ CREATE PROCEDURE myp1() BEGININSERT INTO admin(username,`password`) VALUES('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000'); END $第三步:cmd中輸入 調用語句
CALL myp1()$第四步:查詢輸入的值,這部分可以cmd也可以sqlyang
SELECT * FROM admin;2.創建帶in模式參數的存儲過程
#案例1:創建存儲過程實現 根據女神名,查詢對應的男神信息
cmd中輸入
USE girls; DELIMITER $ CREATE PROCEDURE myp2(IN beautyName VARCHAR(20)) BEGINSELECT bo.*FROM boys boRIGHT JOIN beauty b ON bo.id = b.boyfriend_idWHERE b.name=beautyName;END $CALL myp2('柳巖')$其中的set names gbk$ 改變字符集
sqlyang中創建和調用查詢
#3.創建out 模式參數的存儲過程
#案例2:根據輸入的女神名,返回對應的男神名和魅力值
cmd 中輸入
DELIMITER $ CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT) BEGINSELECT boys.boyname ,boys.usercp INTO boyname,usercpFROM boys RIGHT JOINbeauty b ON b.boyfriend_id = boys.idWHERE b.name=beautyName ;END $#調用 CALL myp7('小昭',@name,@cp)$ SELECT @name,@cp$#4.創建帶inout模式參數的存儲過程
#案例1:傳入a和b兩個值,最終a和b都翻倍并返回
#三、刪除存儲過程
#語法:drop procedure 存儲過程名
#四、查看存儲過程的信息
DESC myp2;× SHOW CREATE PROCEDURE myp2;
電氣工程的計算機萌新,寫博文不容易,如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結
以上是生活随笔為你收集整理的mysql数据库入门教程(13):存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双色球5+2是多少钱一注?
- 下一篇: pyqt5讲解10:布局管理讲解大全