自學(xué)MySQL自定義函數(shù)

下面講講關(guān)于MySQL自定義函數(shù),文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完MySQL自定義函數(shù)這篇文章你一定會有所受益。

東安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

 

1.自定義函數(shù)簡介

 

自定義函數(shù):用戶自定義函數(shù)(user-defined function,UDF)是一種對MySQL擴展的途徑,其用法與內(nèi)置函數(shù)相同

自定義函數(shù)的兩個必要條件:(1)參數(shù)  (2)返回值

 

自定義函數(shù):

創(chuàng)建自定義函數(shù)

CREATE FUNCTION function_nameRETURNS{STRING|INTEGER|REAL|DECIMAL}
routine_body

 

關(guān)于函數(shù)體:

1.函數(shù)體可以由合法的SQL語句構(gòu)成;

2.函數(shù)體可以是簡單的SELECT或INSERT語句;

3.函數(shù)體如果為復(fù)合結(jié)構(gòu)則使用BEGIN...END語句;

4.復(fù)合結(jié)構(gòu)可以包含聲明、循環(huán)、控制結(jié)構(gòu)。

 

2.創(chuàng)建不帶參數(shù)的自定義函數(shù)

創(chuàng)建日期時間為年月日點分秒格式

mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)                 
    -> RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H點:%i分:%s秒'); 
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT f1();+-------------------------------------+| f1()                                |+-------------------------------------+| 2016年11月28日 08點:34分:55秒       |+-------------------------------------+

 

3.創(chuàng)建帶有參數(shù)的自定義函數(shù)

創(chuàng)建可以計算2個數(shù)的平均值的函數(shù)

mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)    -> RETURNS FLOAT(10,2) UNSIGNED    -> RETURN (num1+num2)/2;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT f2(10,16);+-----------+| f2(10,16) |+-----------+|     13.00 |+-----------+

 

4.創(chuàng)建具有符合結(jié)構(gòu)函數(shù)體的自定義函數(shù)

可以通過“DELIMITER 分隔符”修改MySQL中的默認(rèn)結(jié)束符

刪除函數(shù):

DROP FUNCTION [IF EXISTS] function_name

 

 

如果自定義函數(shù)存在符合結(jié)構(gòu),多個語句,函數(shù)體要包含在BEGIN...END內(nèi),同時,需要通過DELIMITER將默認(rèn)的結(jié)束符 ; 修改成其他符號,如://   $$   ,以免函數(shù)由于語句結(jié)尾的 ; 號導(dǎo)致中斷

 

mysql> DELIMITER //mysql> CREATE FUNCTION adduser(username VARCHAR(20))    -> RETURNS INT UNSIGNED    -> BEGIN
    -> INSERT test(username) VALUES(username);    -> RETURN LAST_INSERT_ID();    -> END
    -> //  mysql> DELIMITER ;
mysql> SELECT adduser('Tom');+----------------+| adduser('Tom') |+----------------+|              3 |+----------------+ mysql> SELECT adduser('Rool');+-----------------+| adduser('Rool') |+-----------------+|               4 |+-----------------+ mysql> SELECT * FROM user;+----+----------+| id | username |+----+----------+|  1 | Drive    ||  2 | Cve      ||  3 | Tom      ||  4 | Rool     |+----+----------+ 

對于以上MySQL自定義函數(shù)相關(guān)內(nèi)容,大家還有什么不明白的地方嗎?或者想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

當(dāng)前題目:自學(xué)MySQL自定義函數(shù)
本文來源:http://www.muchs.cn/article26/jsocjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、、用戶體驗、Google、ChatGPT、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計