目錄
數(shù)據(jù)庫(kù)的庫(kù)函數(shù)
一、聚合函數(shù):
1、count:
二、日期時(shí)間函數(shù):
1:now:
2:data
3:time
4:date_format
三、常用的庫(kù)函數(shù)
1:upper
2:lower
3:substring
4:round
5:length
6:concat
7:database
8:user
9:power
四、其他函數(shù):
自定義函數(shù)的創(chuàng)建:
自定義函數(shù)function
1、 函數(shù)創(chuàng)建
2、函數(shù)調(diào)用
3、自定義函數(shù)的刪除
五、函數(shù)的調(diào)用與刪除:
數(shù)據(jù)庫(kù)的庫(kù)函數(shù)
高級(jí)語(yǔ)言一般都有自己的庫(kù)函數(shù),數(shù)據(jù)庫(kù)也不例外,在數(shù)據(jù)庫(kù)中也提供了一些用于實(shí)現(xiàn)特定功能的函數(shù)
一、聚合函數(shù):
在數(shù)據(jù)庫(kù)函數(shù)中,聚合函數(shù)是我們最常用的一類(lèi),所謂的聚合,就是對(duì)一組值進(jìn)行組合計(jì)算,返回單個(gè)值
1、count:
計(jì)數(shù)函數(shù):對(duì)元祖或者屬性計(jì)數(shù)
一般格式:count(屬性名)。
select count(*)from 表名 ;# '*'是對(duì)整個(gè)表的元祖進(jìn)行計(jì)數(shù)
select count(屬性名) from 表名 where 條件表達(dá)式;
# count 支持條件計(jì)數(shù),只計(jì)算有效值,不計(jì)算null值
-- 聚合函數(shù)就是對(duì)一組值進(jìn)行計(jì)算,結(jié)果返回單個(gè)值
-- 統(tǒng)計(jì)函數(shù)count
?? ?-- 統(tǒng)計(jì)學(xué)生人數(shù)
select count(s_id)學(xué)生人數(shù) from student;
-- 數(shù)據(jù)表中的屬性可以作為函數(shù)參數(shù)
-- 求最大值函數(shù)max
?? ?-- 求學(xué)生的最大年齡
select max(s_age) from student;
-- 求最大值min 求平均值avg ,求和sum
二、日期時(shí)間函數(shù):
1:now:
求當(dāng)前的日期和時(shí)間
一般格式:now()
如:select now();
2:data
求日期函數(shù)
一般格式:data (日期時(shí)間類(lèi)型的屬性名)。
如:select data(birthday) from student;
-- 獲取當(dāng)前日期時(shí)間now
select now();
-- 獲取日期函數(shù)date
?? ?-- 獲取指定日期時(shí)間類(lèi)型數(shù)據(jù)中的日期
select date("2020-09-15 08:30:23");
?? ?-- 獲取當(dāng)前時(shí)間
select time(now());
-- 將日期時(shí)間類(lèi)型裝換為字符串類(lèi)型date_format
?? ?-- 將當(dāng)前日期時(shí)間轉(zhuǎn)換成特定格式的字符串select date_format(now(),"%Y-%m-%d %h:%i:%s");
-- 自定義分隔符
?? ?-
3:time
求時(shí)間函數(shù)
一般格式:time (日期時(shí)間類(lèi)型的屬性名)。
如:select time(birthday) from student;
4:date_format
時(shí)間日期類(lèi)型轉(zhuǎn)字符串類(lèi)型函數(shù)
一般格式:date_format(日期時(shí)間類(lèi)型,格式字符串)
如:select date_format(now(),"%Y%M%D:%H%i%s");
#格式字符串可用變量來(lái)代替
三、常用的庫(kù)函數(shù)
1:upper
小寫(xiě)字母轉(zhuǎn)大寫(xiě)字母函數(shù)
一般格式:upper(字符型屬性名)
如:select upper('abc');
#也可用ucase函數(shù)代替,如:select ucase ('abc');
2:lower
大寫(xiě)字母轉(zhuǎn)小寫(xiě)字母函數(shù)
一般格式:lower (字符型屬性名);
如:select upper('ABC');
#也可用lcase函數(shù)代替,如:select lcase("ABC");
3:substring
提取字符串函數(shù),以給定的參數(shù)求字符串中的一個(gè)子串。
一般格式:substrinig(字符串,start ,lenth);
#從字符串中第一個(gè)start個(gè)字符開(kāi)始取出長(zhǎng)度為length的字符串。
如:select substring('abc123@#$',4,3);#結(jié)果為123
#也可以用Mid 函數(shù)代替,如:select mid('abc123@#$',4,3);
4:round
四舍五入函數(shù)。(可代替floor函數(shù),用于取整)
一般格式:round(數(shù)值類(lèi)型[,精確位數(shù)]);
如:select round(1234.56);#不加精準(zhǔn)位數(shù)默認(rèn)精通到整數(shù)位
select round(123,456,2);#加上精準(zhǔn)位數(shù)就保留多少位小數(shù)
-- 獲取當(dāng)前操作的數(shù)據(jù)庫(kù)名database
select database();
-- 獲取當(dāng)前操作的用戶(hù)名user
select user();
5:length
返回字符串的長(zhǎng)度
一般格式:length(字符串)
6:concat
字符串連接函數(shù),連接多個(gè)字符串
一般格式:concat(字符串1,字符串2,....,字符串n)
7:database
返回當(dāng)前數(shù)據(jù)庫(kù)名
一般格式:database()
8:user
獲取當(dāng)前用戶(hù)名
基本格式:user()
9:power
求次方函數(shù)
一般格式:power(底數(shù),指數(shù));
如:select power(2,3); #求2的3次方的值
#可以用pow 函數(shù)代替power函數(shù),如:select pow(2,3);
#舉一反三
#既然有求次方函數(shù),是不是也有求次方根(開(kāi)方)函數(shù)呢?
答:沒(méi)有求次方根函數(shù)
# 那用什么求次方根(開(kāi)方)?
答:還是用pow函數(shù)。
如:pow(9,1/2);pow(4,0.5) # 只需要把指數(shù)改成小數(shù)或分?jǐn)?shù)
四、其他函數(shù):
除了之前講的函數(shù)之外,庫(kù)函數(shù)中還有其他函數(shù),如:求余mod ,隨機(jī)數(shù)rand,三角函數(shù)sin,cos,tan,arc tan,圓周率pi等。
數(shù)據(jù)庫(kù)的庫(kù)函數(shù)相當(dāng)于C語(yǔ)言的庫(kù)函數(shù)差不多,C語(yǔ)言庫(kù)函數(shù)里有的數(shù)據(jù)處理函數(shù),數(shù)據(jù)庫(kù)中基本都會(huì)有,但是Mysql中的函數(shù)不同于c語(yǔ)言中的函數(shù),mysql中的函數(shù)只用于數(shù)據(jù)處理,不會(huì)進(jìn)行其他命令行操作
除此之外,數(shù)據(jù)庫(kù)還可以像C語(yǔ)言一樣,自定義函數(shù)
自定義函數(shù)的創(chuàng)建:
創(chuàng)建自定義函數(shù)的基本格式:
create function 函數(shù)名 (函數(shù)參數(shù) 數(shù)據(jù)類(lèi)型)
returns 返回值類(lèi)型
begin
?? ?# 函數(shù)體
?? ?return (函數(shù)返回值)
end;
#8.0版本的數(shù)據(jù)庫(kù),增加了一個(gè)數(shù)據(jù)庫(kù)安全選項(xiàng)
需要執(zhí)行以下代碼才能創(chuàng)建函數(shù)
set global log_bin_trust_function_creators = true;
-- 數(shù)據(jù)庫(kù)中的函數(shù)只能用于數(shù)據(jù)處理,不可以用于實(shí)現(xiàn)其他功能
自定義函數(shù)function
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-433856.html
1、 函數(shù)創(chuàng)建
-- 求兩個(gè)數(shù)的和
create function sum1(n int,m int)
?? ?returns int -- 給定函數(shù)的返回值類(lèi)型
? ? return n+m; -- 函數(shù)體
-- error code:1418.this function has none of determinstic,no sql,or ...........
-- 如果出現(xiàn)上面的報(bào)錯(cuò),就是安全檢查問(wèn)題
-- 打開(kāi)安全檢查(如果自定義函數(shù)創(chuàng)建不了)
set global log_bin_trust_function_creators = true; -- 輸入這條語(yǔ)句,可以解決報(bào)錯(cuò)
2、函數(shù)調(diào)用
?
select sum1(10,20);
3、自定義函數(shù)的刪除
drop function sum1;
-- 數(shù)據(jù)庫(kù)中自定義函數(shù)使用的特別少,不用詳細(xì)了解
create function sum1(n int,m int)
?? ?returns int -- 給定函數(shù)的返回值類(lèi)型
? ? begin -- 相當(dāng)于c/c++中的{
? ? set n = n+m ; -- 復(fù)合語(yǔ)句
? ? return n+m; -- 函數(shù)體
? ? end; --相當(dāng)于c/c++中的}
-- begin end 相當(dāng)于c/c++中的括號(hào)
-- 數(shù)據(jù)庫(kù)中自定義函數(shù)使用的特別少,不用詳細(xì)了解
-- 如果在數(shù)據(jù)中進(jìn)行數(shù)據(jù)處理時(shí)需要有用到函數(shù)的,一般使用數(shù)據(jù)庫(kù)的庫(kù)函數(shù)就基本能夠完成了
-- 數(shù)據(jù)庫(kù)中的函數(shù)只能用于數(shù)據(jù)處理,不可以用于實(shí)現(xiàn)其他功能
-- 數(shù)據(jù)庫(kù)函數(shù)中無(wú)法執(zhí)行sql語(yǔ)句
五、函數(shù)的調(diào)用與刪除:
1、函數(shù)調(diào)用
函數(shù)調(diào)用的基本格式:
select 函數(shù)名 (函數(shù)參數(shù));
2、用表格數(shù)據(jù)作為函數(shù)參數(shù)
select 函數(shù)名(表格屬性) from 表名;
3、刪除函數(shù)
drop function 函數(shù)名;文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-433856.html
?
到了這里,關(guān)于什么是數(shù)據(jù)庫(kù)中的函數(shù)(庫(kù)函數(shù)與自定義函數(shù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!