《MySQL—存儲(chǔ)過程基礎(chǔ)知識(shí)》要點(diǎn):
本文介紹了MySQL—存儲(chǔ)過程基礎(chǔ)知識(shí),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
儲(chǔ)存過程就是數(shù)據(jù)庫中保留的一系列sql命令的集合,也可以看作是相互之間有關(guān)系的sql命令組織在一起的一個(gè)小程序,這些sql命令通常并非簡單地組合在一起,還可以使用各種條件判斷、循環(huán)控制等來實(shí)現(xiàn)簡單的sql命令不能實(shí)現(xiàn)的復(fù)雜功能.
存儲(chǔ)過程的優(yōu)勢:
1、提高執(zhí)行性能
通常在sql客戶端執(zhí)行sql命令時(shí)數(shù)據(jù)庫會(huì)有解析到編譯的一個(gè)前期過程.而存儲(chǔ)過程則是事先完成了解析、編譯的處理后保留在數(shù)據(jù)庫中的,執(zhí)行時(shí)能減輕數(shù)據(jù)庫負(fù)擔(dān).
2、可減輕網(wǎng)絡(luò)負(fù)擔(dān)
使用存儲(chǔ)過程后,復(fù)雜的數(shù)據(jù)庫操作也可以在數(shù)據(jù)庫服務(wù)器中完成.只需要從應(yīng)用程序傳遞給數(shù)據(jù)庫必要的參數(shù)就行.
3、可防止對(duì)表的直接拜訪
可以禁止對(duì)表本身的拜訪,只賦予用戶對(duì)相關(guān)存儲(chǔ)過程的拜訪權(quán)限,只允許通過儲(chǔ)存過程拜訪表.
4、可將數(shù)據(jù)庫的處理黑匣子化
應(yīng)用程序完全不用考慮儲(chǔ)存過程的內(nèi)部詳細(xì)處理,只需要知道調(diào)用那個(gè)存儲(chǔ)過程就好了.
使用存儲(chǔ)過程:
創(chuàng)建:
mysql存儲(chǔ)過程語法
上面就是將“處理內(nèi)容”定義成名為 #存儲(chǔ)過程名# 的存儲(chǔ)過程
存儲(chǔ)過程中可以指定參數(shù),參數(shù)分為輸入?yún)?shù)(接受調(diào)用方的數(shù)據(jù),默認(rèn)),輸出參數(shù)(向調(diào)用方返回處理結(jié)果).使用關(guān)鍵字in、out、inout來指定.inout既是輸入型也是輸出型.
delimiter是改變分隔符的,將默認(rèn)的分隔符修改成別的符號(hào).默認(rèn)是[;],因?yàn)榇鎯?chǔ)過程本身就是命令的集合,所以會(huì)包括[;],因此使用delimiter來區(qū)分.
例子:
創(chuàng)建存儲(chǔ)過程
存儲(chǔ)過程中可使用的控制語句:
具體的控制語句有條件分支選擇語句、循環(huán)控制語句等.
可使用的控制語句
查看存儲(chǔ)過程:show procedure status;
調(diào)用存儲(chǔ)過程:
call #存儲(chǔ)過程名字#(參數(shù),...)
在調(diào)用存儲(chǔ)過程的時(shí)候,如果出現(xiàn)參數(shù)數(shù)目不符(或多或少)的情況,將會(huì)顯示錯(cuò)誤信息.
定義輸出參數(shù):
當(dāng)指定了out/outin類型的參數(shù)時(shí),通過給參數(shù)名的頭部添加@符號(hào)可以將處理結(jié)果保留到out型變量中,然后使用select @變量名來顯示變量信息.
定義當(dāng)?shù)刈兞浚?局部變量)
在各個(gè)條件分支程序塊中,會(huì)有一些執(zhí)行相似的代碼,也就是有些執(zhí)行的部分是一樣的,我們可以將這些相同的部分移動(dòng)到條件判斷外,在分支程序塊中只有檢索條件字符的部分代碼.也就是將檢索條件字符存放在當(dāng)?shù)刈兞康淖兞恐?
使用局部變量必須用 declare 聲明變量的名稱以及數(shù)據(jù)類型.
declare的語法
給變量賦值:set #變量名# =值
例子:
沒有定義當(dāng)?shù)刈兞壳暗氖褂茫?/p>
定義了當(dāng)?shù)刈兞亢蟮氖褂茫?/p>
對(duì)比可見,使用當(dāng)?shù)刈兞匡@然將[select id,author,title from article where author=]相同的部份移到條件判斷外了.
存儲(chǔ)過程的使用:
1、當(dāng)一個(gè)事務(wù)涉及到多個(gè)SQL語句時(shí)或者涉及到對(duì)多個(gè)表的操作時(shí)就要考慮用存儲(chǔ)過程;
2、當(dāng)在一個(gè)事務(wù)的完成需要很復(fù)雜的業(yè)務(wù)邏輯時(shí)例如對(duì)多個(gè)數(shù)據(jù)的操作或者對(duì)多個(gè)狀態(tài)的判斷更改等要考慮;
3、還有就是在比擬復(fù)雜的統(tǒng)計(jì)和匯總中也要考慮,但是過多的使用存儲(chǔ)過程會(huì)降低系統(tǒng)的移植性.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《MySQL—存儲(chǔ)過程基礎(chǔ)知識(shí)》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/7128.html