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