W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
一、為什么使用存儲(chǔ)過程
要了解為什么使用存儲(chǔ)過程,我們先來看看我們?cè)谑褂胹ql操作時(shí)的一個(gè)流程。下面這張圖是截屏慕課網(wǎng)視頻教程的圖片。
通過查看上面的圖片,我們不難看出在執(zhí)行sql操作過程中的流程是要經(jīng)過多個(gè)過程,如果我們的網(wǎng)站數(shù)據(jù)量比較小還好,如果大型網(wǎng)站,這樣執(zhí)行下來不久很慢了。如果我們能從中省略一些步驟或者說可以把一些查詢到數(shù)據(jù)暫時(shí)存儲(chǔ)起來,我們?cè)谙麓问褂玫臅r(shí)候,就直接使用存儲(chǔ)起來的數(shù)據(jù),這樣數(shù)據(jù)的加載就塊很多了。這就是存儲(chǔ)的目的。
二、存儲(chǔ)過程的優(yōu)勢(shì)
1.增強(qiáng)sql語句的功能和靈活性
2.實(shí)現(xiàn)較快的查詢(當(dāng)我們第一次查詢的時(shí)候就把數(shù)據(jù)存儲(chǔ)起來,或者說將一些數(shù)據(jù)查詢出來之后在存儲(chǔ),當(dāng)我們?cè)俅握{(diào)用的時(shí)候就直接使用上一次存儲(chǔ)的數(shù)據(jù),就避免了重復(fù)的去請(qǐng)求同一個(gè)操作)
3.較少網(wǎng)絡(luò)流量(當(dāng)我們將數(shù)據(jù)存儲(chǔ)起來,避免多次加載重復(fù)的數(shù)據(jù),這樣對(duì)帶寬的消耗也少了很多)
三、如何使用存儲(chǔ)過程
1.創(chuàng)建存儲(chǔ)過程
create procedure sp_name([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形...]) begin
執(zhí)行的sql語句1;
執(zhí)行的sql語句2;
end
IN 輸入?yún)?shù)
表示該參數(shù)的值必須在調(diào)用存儲(chǔ)過程時(shí)指定,在存儲(chǔ)過程中修改該參數(shù)的值不能被返回,為默認(rèn)值
OUT 輸出參數(shù)
該值可在存儲(chǔ)過程內(nèi)部被改變,并可返回
INOUT 輸入輸出參數(shù)
調(diào)用時(shí)指定,并且可被改變和返回
參數(shù)名和sql語句中的字段名不能相同
示例代碼:
1.不帶參數(shù)
CREATE PROCEDURE sp_name() SELECT VERSION();
2.帶參數(shù)
CREATE PROCEDURE delbyId(IN id INT UNSIGNED)
BEGIN
DELETE FROM t_name WHERE u_id = id;
END
2.刪除存儲(chǔ)過程
drop procedure sp_name
不能在一個(gè)存儲(chǔ)過程中刪除另一個(gè)存儲(chǔ)過程,只能調(diào)用另一個(gè)存儲(chǔ)過程
3.使用存儲(chǔ)過程
1.call sp_name ([param])// 帶參數(shù)
2.call sp_name[(param)] // 不帶參數(shù)
4.查詢存儲(chǔ)過程
show procedure status
show create procedure sp_name
5.修改存儲(chǔ)過程
不能修改存儲(chǔ)體內(nèi)的東西
6.通過函數(shù)和存儲(chǔ)過程的對(duì)比,我們可以發(fā)現(xiàn)他們有共同之處,那我們?cè)撊绾芜x擇呢?
1.存儲(chǔ)過程執(zhí)行功能相對(duì)復(fù)雜,而函數(shù)針對(duì)性更強(qiáng)
2.函數(shù)只能有一個(gè)返回值,存儲(chǔ)過程可以返回多個(gè)值
3.存儲(chǔ)過程一般獨(dú)立執(zhí)行,而函數(shù)可以作為其他sql語句的組成部分來實(shí)現(xiàn)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: