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