存儲過程

2018-01-06 01:01 更新

一、為什么使用存儲過程

        要了解為什么使用存儲過程,我們先來看看我們在使用sql操作時的一個流程。下面這張圖是截屏慕課網(wǎng)視頻教程的圖片。

    圖片1

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




以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號