存儲(chǔ)過程

2018-01-06 01:01 更新

一、為什么使用存儲(chǔ)過程

        要了解為什么使用存儲(chǔ)過程,我們先來看看我們?cè)谑褂胹ql操作時(shí)的一個(gè)流程。下面這張圖是截屏慕課網(wǎng)視頻教程的圖片。

    圖片1

        通過查看上面的圖片,我們不難看出在執(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)




以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)