為什么使用mysql儲(chǔ)存過程?mysql儲(chǔ)存過程簡介
發(fā)表時(shí)間:2023-09-07 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]存儲(chǔ)過程需要MySQL 5 MySQL 5添加了對存儲(chǔ)過程的支持,因此,本章內(nèi)容適用于MySQL 5及以后的版本。迄今為止,使用的大多數(shù)SQL語句都是針對一個(gè)或多個(gè)表的單條語句。并非所有操作都這么簡單,經(jīng)常會(huì)有一個(gè)完整的操作需要多條語句才能完成。例如,考慮以下的情形。1.為了處理訂單,需要核對以保...
存儲(chǔ)過程需要MySQL 5 MySQL 5添加了對存儲(chǔ)過程的支持,因此,本章內(nèi)容適用于MySQL 5及以后的版本。
迄今為止,使用的大多數(shù)SQL語句都是針對一個(gè)或多個(gè)表的單條語句。并非所有操作都這么簡單,經(jīng)常會(huì)有一個(gè)完整的操作需要多條語句才能完成。例如,考慮以下的情形。
1.為了處理訂單,需要核對以保證庫存中有相應(yīng)的物品。
2.如果庫存有物品,這些物品需要預(yù)定以便不將它們再賣給別的人,并且要減少可用的物品數(shù)量以反映正確的庫存量。
3.庫存中沒有的物品需要訂購,這需要與供應(yīng)商進(jìn)行某種交互。
4.關(guān)于哪些物品入庫(并且可以立即發(fā)貨)和哪些物品退訂,需要通知相應(yīng)的客戶。
這顯然不是一個(gè)完整的例子,它甚至超出了本書中所用樣例表的范圍,但足以幫助表達(dá)我們的意思了。執(zhí)行這個(gè)處理需要針對許多表的多條MySQL語句。此外,需要執(zhí)行的具體語句及其次序也不是固定的,它們可能會(huì)(和將)根據(jù)哪些物品在庫存中哪些不在而變化。
那么,怎樣編寫此代碼?可以單獨(dú)編寫每條語句,并根據(jù)結(jié)果有條件地執(zhí)行另外的語句。在每次需要這個(gè)處理時(shí)(以及每個(gè)需要它的應(yīng)用中)都必須做這些工作。
可以創(chuàng)建存儲(chǔ)過程。存儲(chǔ)過程簡單來說,就是為以后的使用而保存的一條或多條MySQL語句的集合?蓪⑵湟暈榕募m然它們的作用不僅限于批處理。
為什么要使用存儲(chǔ)過程
既然我們知道了什么是存儲(chǔ)過程,那么為什么要使用它們呢?有許多理由,下面列出一些主要的理由。
1.通過把處理封裝在容易使用的單元中,簡化復(fù)雜的操作。
2.由于不要求反復(fù)建立一系列處理步驟,這保證了數(shù)據(jù)的完整性。如果所有開發(fā)人員和應(yīng)用程序都使用同一(試驗(yàn)和測試)存儲(chǔ)過程,則所使用的代碼都是相同的。這一點(diǎn)的延伸就是防止錯(cuò)誤。需要執(zhí)行的步驟越多,出錯(cuò)的可能性就越大。防止錯(cuò)誤保證了數(shù)據(jù)的一致性。
3.簡化對變動(dòng)的管理。如果表名、列名或業(yè)務(wù)邏輯(或別的內(nèi)容)有變化,只需要更改存儲(chǔ)過程的代碼。使用它的人員甚至不需要知道這些變化。這一點(diǎn)的延伸就是安全性。通過存儲(chǔ)過程限制對基礎(chǔ)數(shù)據(jù)的訪問減少了數(shù)據(jù)訛誤(無意識的或別的原因所導(dǎo)致的數(shù)據(jù)訛誤)的機(jī)會(huì)。
4.提高性能。因?yàn)槭褂么鎯?chǔ)過程比使用單獨(dú)的SQL語句要快。
5.存在一些只能用在單個(gè)請求中的MySQL元素和特性,存儲(chǔ)過程可以使用它們來編寫功能更強(qiáng)更靈活的代碼。換句話說,使用存儲(chǔ)過程有3個(gè)主要的好處,即簡單、安全、高性能。顯然,它們都很重要。不過,在將SQL代碼轉(zhuǎn)換為存儲(chǔ)過程前,也必須知道它的一些缺陷。
6.一般來說,存儲(chǔ)過程的編寫比基本SQL語句復(fù)雜,編寫存儲(chǔ)過程需要更高的技能,更豐富的經(jīng)驗(yàn)。
7.你可能沒有創(chuàng)建存儲(chǔ)過程的安全訪問權(quán)限。許多數(shù)據(jù)庫管理員限制存儲(chǔ)過程的創(chuàng)建權(quán)限,允許用戶使用存儲(chǔ)過程,但不允許他們創(chuàng)建存儲(chǔ)過程。盡管有這些缺陷,存儲(chǔ)過程還是非常有用的,并且應(yīng)該盡可能地使用。
不能編寫存儲(chǔ)過程?你依然可以使用 MySQL將編寫存儲(chǔ)過程的安全和訪問與執(zhí)行存儲(chǔ)過程的安全和訪問區(qū)分開來。這是好事情。即使你不能(或不想)編寫自己的存儲(chǔ)過程,也仍然可以在適當(dāng)?shù)臅r(shí)候執(zhí)行別的存儲(chǔ)過程。
以上就是為什么使用mysql儲(chǔ)存過程?mysql儲(chǔ)存過程簡介的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。