mysql自定義函數(shù)原理與用法實(shí)例分析
本文實(shí)例講述了mysql自定義函數(shù)原理與用法。分享給大家供大家參考,具體如下:
本文內(nèi)容:
- 什么是函數(shù)
- 函數(shù)的創(chuàng)建
- 函數(shù)的調(diào)用
- 函數(shù)的查看
- 函數(shù)的修改
- 函數(shù)的刪除
首發(fā)日期:2018-04-18
什么是函數(shù):
- 函數(shù)存儲(chǔ)著一系列sql語(yǔ)句,調(diào)用函數(shù)就是一次性執(zhí)行這些語(yǔ)句。所以函數(shù)可以降低語(yǔ)句重復(fù)?!镜⒁獾氖呛瘮?shù)注重返回值,不注重執(zhí)行過(guò)程,所以一些語(yǔ)句無(wú)法執(zhí)行。所以函數(shù)并不是單純的sql語(yǔ)句集合。】
- mysql函數(shù)有自己的自定義函數(shù)(已經(jīng)定義好了的函數(shù)),想了解更多的可以參考我的另一篇博文:mysql常用函數(shù)
- 這里主要介紹如何自定義函數(shù)。
補(bǔ)充:
- 函數(shù)與存儲(chǔ)過(guò)程的區(qū)別:函數(shù)只會(huì)返回一個(gè)值,不允許返回一個(gè)結(jié)果集。函數(shù)強(qiáng)調(diào)返回值,所以函數(shù)不允許返回多個(gè)值的情況,即使是查詢語(yǔ)句。
-- 不行的代碼:Not allowed to return a result set from a function create function myf()returns int begin select * from student; return 100; end;
函數(shù)的創(chuàng)建:
- 語(yǔ)法:
create function 函數(shù)名([參數(shù)列表]) returns 數(shù)據(jù)類型 begin sql語(yǔ)句; return 值; end;
- 參數(shù)列表的格式是: 變量名 數(shù)據(jù)類型
- 示例:
-- 最簡(jiǎn)單的僅有一條sql的函數(shù) create function myselect2() returns int return 666; select myselect2(); -- 調(diào)用函數(shù) -- create function myselect3() returns int begin declare c int; select id from class where cname="python" into c; return c; end; select myselect3(); -- 帶傳參的函數(shù) create function myselect5(name varchar(15)) returns int begin declare c int; select id from class where cname=name into c; return c; end; select myselect5("python");
補(bǔ)充:
- 還可以有一些特別的選項(xiàng),特別的選項(xiàng)寫在return 之后,begin之前,如:
- comment:一個(gè)關(guān)于函數(shù)的描述
- 還有一些比如sql security等選項(xiàng),有興趣可以自行百度。這里不講解,僅一提有此知識(shí)點(diǎn)。
函數(shù)的調(diào)用:
- 直接使用函數(shù)名()就可以調(diào)用【雖然這么說(shuō),但返回的是一個(gè)結(jié)果,sql中不使用select的話任何結(jié)果都無(wú)法顯示出來(lái)(所以單純調(diào)用會(huì)報(bào)錯(cuò)),】
- 如果想要傳入?yún)?shù)可以使用函數(shù)名(參數(shù))
- 調(diào)用方式【下面調(diào)用的函數(shù)都是上面中創(chuàng)建的。】:
-- 無(wú)參調(diào)用 select myselect3(); -- 傳參調(diào)用 select myselect5("python"); select * from class where id=myselect5("python");
函數(shù)的查看:
- 查看函數(shù)創(chuàng)建語(yǔ)句:show create function 函數(shù)名;
- 查看所有函數(shù):show function status [like 'pattern'];
函數(shù)的修改:
- 函數(shù)的修改只能修改一些如comment的選項(xiàng),不能修改內(nèi)部的sql語(yǔ)句和參數(shù)列表。
- alter function 函數(shù)名 選項(xiàng);
函數(shù)的刪除:
- drop function 函數(shù)名;
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
相關(guān)文章
如何恢復(fù)Mysql數(shù)據(jù)庫(kù)的詳細(xì)介紹
這里說(shuō)的MySql恢復(fù)數(shù)據(jù)庫(kù),是指沒(méi)有通過(guò)正常備份的情況下,通過(guò)Mysql保存的數(shù)據(jù)文件如何恢復(fù)數(shù)據(jù)庫(kù)2013-09-09MySql 中聚合函數(shù)增加條件表達(dá)式的方法
這篇文章主要介紹了MySql 中聚合函數(shù)增加條件表達(dá)式的方法,需要的朋友可以參考下2018-06-06MySQL兩個(gè)查詢?nèi)绾魏喜⒊梢粋€(gè)結(jié)果詳解
利用union關(guān)鍵字,可以給出多條select語(yǔ)句,并將它們的結(jié)果組合成單個(gè)結(jié)果集,下面這篇文章主要給大家介紹了關(guān)于MySQL兩個(gè)查詢?nèi)绾魏喜⒊梢粋€(gè)結(jié)果的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290報(bào)錯(cuò)解決
這篇文章主要給大家介紹了關(guān)于MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290:...?running?with?--skip-...報(bào)錯(cuò)的解決方法,文中通過(guò)圖文將解決的步驟介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02RHEL6.2編譯安裝MySQL 5.6.16過(guò)程分享
這篇文章主要介紹了RHEL6.2編譯安裝MySQL 5.6.16過(guò)程分享,還包括了mysql_secure_installation腳本運(yùn)行指導(dǎo),需要的朋友可以參考下2014-07-07Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù)(最新推薦)
這篇文章主要介紹了Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù),實(shí)現(xiàn)原理也很簡(jiǎn)單,mysql刪除重復(fù)數(shù)據(jù),多個(gè)字段分組操作,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02Mysql實(shí)現(xiàn)簡(jiǎn)易版搜索引擎的示例代碼
前段時(shí)間,因?yàn)轫?xiàng)目需求,需要根據(jù)關(guān)鍵詞搜索聊天記錄,所以本文實(shí)現(xiàn)了Mysql實(shí)現(xiàn)簡(jiǎn)易版搜索引擎,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08MySQL查詢表中重復(fù)數(shù)據(jù)的實(shí)現(xiàn)
在數(shù)據(jù)庫(kù)中,我們經(jīng)常需要查詢重復(fù)字段來(lái)確保數(shù)據(jù)的準(zhǔn)確性,如果數(shù)據(jù)中有重復(fù)字段,則可能會(huì)導(dǎo)致查詢結(jié)果錯(cuò)誤,本文就想詳細(xì)的介紹了MySQL查詢表中重復(fù)數(shù)據(jù),感興趣的可以了解一下2023-08-08