搜尋
首頁資料庫mysql教程為什麼使用mysql儲存流程? mysql儲存過程簡介

預存程序

需要MySQL 5 MySQL 5新增了對預存程序的支持,因此,本章內容適用於MySQL 5及以後的版本。

迄今為止,使用的大多數SQL語句都是針對一個或多個表格的單一語句。並非所有操作都這麼簡單,而且常常會有一個完整的操作需要多個語句才能完成。例如,考慮以下的情況。

1.為了處理訂單,需要核對以確保庫存中有相應的物品。

2.如果庫存有物品,這些物品需要預定以便不將它們再賣給別的人,並且要減少可用的物品數量以反映正確的庫存量。

3.庫存中沒有的物品需要訂購,這需要與供應商進行某種互動。

4.關於哪些物品入庫(並且可以立即發貨)和哪些物品退訂,需要通知相應的客戶。

這顯然不是一個完整的例子,它甚至超出了本書中所用樣例表的範圍,但足以幫助表達我們的意思了。執行這個處理需要針對許多表格的多條MySQL語句。此外,需要執行的具體語句及其次序也不是固定的,它們可能會(和將)根據哪些物品在庫存中哪些不在而變化。

那麼,怎麼寫此程式碼?可以單獨編寫每條語句,並根據結果有條件地執行另外的語句。在每次需要這個處理時(以及每個需要它的應用程式中)都必須做這些工作。

可以建立預存程序。預存程序簡單來說,就是為以後的使用而保存的一條或多條MySQL語句的集合。可將其視為批次文件,雖然它們的作用不僅限於批次。


為什麼要使用預存程序

既然我們知道了什麼是預存程序,那為什麼要使用它們呢?有許多理由,以下列出一些主要的理由。

1.透過把處理封裝在容易使用的單元中,簡化複雜的運算

2.由於不要求反覆建立一系列處理步驟,這保證了資料的完整性。如果所有開發人員和應用程式都使用相同(試驗和測試)預存程序,則所使用的程式碼都是相同的。 這一點的延伸就是防止錯誤。需要執行的步驟越多,出錯的可能性就越大。防止錯誤保證了資料的一致性。

3.簡化變動的管理。如果表名、列名或業務邏輯(或別的內容)有變化,只需要更改預存程序的程式碼。使用它的人員甚至不需要知道這些變化。 這一點的延伸就是安全性。透過儲存過程限制對基礎資料的存取減少了資料訥誤(無意識的或別的原因所導致的資料訥誤)的機會。

4.提高效能。因為使用預存程序比使用單獨的SQL語句快。

5.存在一些只能用在單一請求中的MySQL元素和特性,預存程序可以使用它們來編寫功能更強更靈活的程式碼。 換句話說,使用預存程序有3個主要的好處,即簡單、安全、高效能。顯然,它們都很重要。不過,在將SQL程式碼轉換為預存程序前,也必須知道它的一些缺陷。

6.一般來說,預存程序的編寫比基本SQL語句複雜,編寫預存程序需要更高的技能,更豐富的經驗。

7.你可能沒有建立預存程序的安全存取權。許多資料庫管理員限制預存程序的建立權限,允許使用者使用預存程序,但不允許他們建立預存程序。儘管有這些缺陷,預存程序還是非常有用的,並且應該盡可能地使用。

不能寫預存程序?你仍然可以使用 MySQL將編寫預存程序的安全性和存取與執行預存程序的安全性和存取區分開來。這是好事情。即使你不能(或不想)編寫自己的預存程序,也仍然可以在適當的時候執行別的預存程序。

以上是為什麼使用mysql儲存流程? mysql儲存過程簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具