mysql——存儲過程簡介



什麼是存儲過程?


是存儲在數據庫服務器的一組sql語句,通過在查詢中調用某個指定的名稱來執行,類似於封裝了一組命令的函數


爲什麼要使用存儲過程?


優點:


一致性:不同的語言開發完成相同的數據庫操作寫入存儲過程就可以減少重複代碼(可重用)


高性能:在團隊開發中如果很有經驗的員工來進行存儲過程的編寫,就可以很好的提高效率


安全性:有一些特定的開發要求權限控制,使用存儲過程就能夠確保開發人員只能訪問任務所必須的信息


架構性:使用存儲過程和數據層進行操作可以進一步增強大型應用應用程序的管理性


缺點:


從性能上來說,會消耗額外的內存資源


從功能上來說,使用其他語言來構建存儲過程會更方便,如:php


從維護性上來說,更換數據庫服務器(sqlserver、mysql、orale、redis、mongodb...)會出現移植性的問題


如何創建存儲過程?


存儲過程和存儲函數合稱爲存儲例程


存儲過程:支持增刪改查等sql命令還可以設置能在程序外引用的參數


存儲函數:只支持查詢命令的執行,只接受輸入參數,並且必須要返回一個值


創建存儲過程的結構:


create procedure 存儲過程名(參數)


SQL語言


存儲存儲函數的結構:


create function 存儲函數名(參數)


return type---返回類型


SQL語句


存儲過程中的參數:


in 只用來向存儲過程傳遞信息


out 只用來從存儲過程傳回信息


inout 可以向存儲過程傳遞信息,如果值改變,則可以再從存儲外調用


聲明和設置變量


聲明變量:declare 變量名 變量類型[默認值]


設置變量:set 變量名=值[,變量名=值]


 select 列名 into 變量名 from 表名 where 條件


執行存儲過程


call 存儲過程名(參數)


創建多條語句的存儲過程


begin和end語句塊


條件


if-elseif-else和case


語法結構:


if 條件 then 語句


elseif 條件 then 語句


else 語句


end if




case


when 條件 then 語句


when 條件 then 語句


...


else 語句


end case


迭代


iterate、leave、loop、repeat


leave類似於java中的break語句


語法結構:


loop類似於for循環


[begin_lable:]loop


執行語句


end loop[end_lable]


repeat類似於do-while循環


[begin_lable:]repeat


執行語句


until 條件


end repeat[end_lable]


while語句


[begin_lable:]while 條件 do


執行語句


end while[end_lable]


修改存儲過程


alter (procedure|function) 過程(函數)名 修改的內容


刪除存儲過程


drop (procedure|function)[if exists] 過程(函數)名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章