日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Mysql学习总结(5)——MySql常用函数大全讲解

發(fā)布時(shí)間:2025/4/16 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql学习总结(5)——MySql常用函数大全讲解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL數(shù)據(jù)庫(kù)中提供了很豐富的函數(shù)。MySQL函數(shù)包括數(shù)學(xué)函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)、條件判斷函數(shù)、系統(tǒng)信息函數(shù)、加密函數(shù)、格式化函數(shù)等。通過(guò)這些函數(shù),可以簡(jiǎn)化用戶的操作。例如,字符串連接函數(shù)可以很方便的將多個(gè)字符串連接在一起。在這一講中將講解的內(nèi)容包括:
數(shù)學(xué)函數(shù)
字符串函數(shù)
日期和時(shí)間函數(shù)
條件判斷函數(shù)
系統(tǒng)信息函數(shù)
加密函數(shù)
格式化函數(shù)

? ? ? ?MySQL函數(shù)是MySQL數(shù)據(jù)庫(kù)提供的內(nèi)部函數(shù)。這些內(nèi)部函數(shù)可以幫助用戶更加方便的處理表中的數(shù)據(jù)。本小節(jié)中將簡(jiǎn)單介紹MySQL中包含哪幾類函數(shù),以及這幾類函數(shù)的的使用范圍和作用。MySQL函數(shù)包括數(shù)學(xué)函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)、條件判斷函數(shù)、系統(tǒng)信息函數(shù)、加密函數(shù)等。SELECT語(yǔ)句及其條件表達(dá)式都可以使用這些函數(shù)。同時(shí),INSERT 、UPDATE、DELECT語(yǔ)句及其條件表達(dá)式也可以使用這些函數(shù)。例如,表中的某個(gè)數(shù)據(jù)是負(fù)數(shù),現(xiàn)在需要將這個(gè)數(shù)據(jù)顯示為正數(shù)。這就可以使用絕對(duì)值函數(shù)。從上面可以知道,MySQL函數(shù)可以對(duì)表中數(shù)據(jù)進(jìn)行相應(yīng)的處理,以便得到用戶希望得到的數(shù)據(jù)。這些函數(shù)可以使MySQL數(shù)據(jù)庫(kù)的功能更加強(qiáng)大。

一、數(shù)學(xué)函數(shù)

數(shù)學(xué)函數(shù)是MySQL中常用的一類函數(shù)。主要用于處理數(shù)字,包括整型、浮點(diǎn)數(shù)等。數(shù)學(xué)函數(shù)包括絕對(duì)值函數(shù)、正弦函數(shù)、余弦函數(shù)、獲取隨機(jī)數(shù)的函數(shù)等。

ABS(X):返回X的絕對(duì)值
select ABS(-32);?

MOD(N,M)或%:返回N被M除的余數(shù)。?
select MOD(15,7);?
select 15 % 7;?

FLOOR(X):返回不大于X的最大整數(shù)值。?
select FLOOR(1.23);?
select FLOOR(-1.23);?

CEILING(X):返回不小于X的最小整數(shù)值。?
select CEILING(1.23);?
select CEILING(-1.23);?

ROUND(X) :返回參數(shù)X的四舍五入的一個(gè)整數(shù)。?
select ROUND(1.58);?
select ROUND(-1.58);?


二、字符串函數(shù)

ASCII(str):返回字符串str的最左面字符的ASCII代碼值。如果str是空字符串,返回0。如果str是NULL,返回NULL。?
select ASCII('2');?
select ASCII(2);?
select ASCII('dx')?


CONCAT(str1,str2,...):返回來(lái)自于參數(shù)連結(jié)的字符串。如果任何參數(shù)是NULL,返回NULL。可以有超過(guò)2個(gè)的參數(shù)。一個(gè)數(shù)字參數(shù)被變換為等價(jià)的字符串形式。?
select CONCAT('My', 'S', 'QL');?
select CONCAT('My', NULL, 'QL');?
select CONCAT(14.3);?

LENGTH(str):返回字符串str的長(zhǎng)度。
select LENGTH('text');?


LOCATE(substr,str):返回子串substr在字符串str第一個(gè)出現(xiàn)的位置,如果substr不是在str里面,返回0.?
select LOCATE('bar', 'foobarbar');?
select LOCATE('xbar', 'foobar');?

INSTR(str,substr):返回子串substr在字符串str中的第一個(gè)出現(xiàn)的位置。
select INSTR('foobarbar', 'bar');?
select INSTR('xbar', 'foobar');?


LEFT(str,len):返回字符串str的最左面len個(gè)字符。
select LEFT('foobarbar', 5);?

RIGHT(str,len):返回字符串str的最右面len個(gè)字符。?
select RIGHT('foobarbar', 4);?


SUBSTRING(str,pos):從字符串str的起始位置pos返回一個(gè)子串。?
select SUBSTRING('Quadratically',5);

TRIM(str):返回字符串str,所有前綴或后綴被刪除了。
select TRIM(' bar '); ??


LTRIM(str):返回刪除了其前置空格字符的字符串str。
select LTRIM(' barbar');?

RTRIM(str):返回刪除了其拖后空格字符的字符串str。
select RTRIM(‘barbar ’);?

??
REPLACE(str,from_str,to_str):返回字符串str,其字符串from_str的所有出現(xiàn)由字符串to_str代替。?

select REPLACE('www.mysql.com', 'w', 'Ww');?

REPEAT(str,count):返回由重復(fù)countTimes次的字符串str組成的一個(gè)字符串。如果count <= 0,返回一個(gè)空字符串。如果str或count是NULL,返回NULL。?
select REPEAT('MySQL', 3);?


REVERSE(str):返回顛倒字符順序的字符串str。?
select REVERSE('abc');

INSERT(str,pos,len,newstr):返回字符串str,在位置pos起始的子串且len個(gè)字符長(zhǎng)的子串由字符串newstr代替。?
select INSERT(‘whatareyou', 5, 3, ‘is');?

??

三、日期和時(shí)間函數(shù)?

DAYOFWEEK(date):返回日期date的星期索引(1=星期天,2=星期一, …7=星期六)。
select DAYOFWEEK('1998-02-03');?
select DAYOFWEEK(now());?

WEEKDAY(date):返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
select WEEKDAY('1997-11-05');?

DAYOFMONTH(date):返回date的月份中的日期,在1到31范圍內(nèi)。?
select DAYOFMONTH('1998-02-03');?

DAYOFYEAR(date):返回date在一年中的日數(shù), 在1到366范圍內(nèi)。?
select DAYOFYEAR('1998-02-03');?

MONTH(date):返回date的月份,范圍1到12。?
select MONTH('1998-02-03');?

DAYNAME(date):返回date的星期名字。?
select DAYNAME("1998-02-05");?

MONTHNAME(date) :返回date的月份名字。?
select MONTHNAME("1998-02-05");?


QUARTER(date):返回date一年中的季度,范圍1到4。?
select QUARTER('98-04-01');?


WEEK(date,first):對(duì)于星期天是一周的第一天的地方,有一個(gè)單個(gè)參數(shù),返回date的周數(shù),范圍在0到52。2個(gè)參數(shù)形式WEEK()允許你指定星期是否開(kāi)始于星期天或星期一。如果第二個(gè)參數(shù)是0,星期從星期天開(kāi)始,如果第二個(gè)參數(shù)是1,從星期一開(kāi)始。?
select WEEK('2009-02-20');?
select WEEK('2009-02-20',0);?
select WEEK('2009-02-20',1);?


YEAR(date):返回date的年份,范圍在1000到9999。?
select YEAR('98-02-03');?

HOUR(time):返回time的小時(shí),范圍是0到23。
select HOUR('10:05:03');?

MINUTE(time):返回time的分鐘,范圍是0到59。?
select MINUTE('98-02-03 10:05:03');?

SECOND(time):回來(lái)time的秒數(shù),范圍是0到59。?
select SECOND('10:05:03');?

?? DATE_ADD(date,INTERVAL expr type) ,進(jìn)行日期增加的操作,可以精確到秒
DATE_SUB(date,INTERVAL expr type) ,進(jìn)行日期減少的操作,可以精確到秒

SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;?

SELECT INTERVAL 1 DAY + "1997-12-31";?
SELECT "1998-01-01" - INTERVAL 1 SECOND;?
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 SECOND);?
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL "1:1" MINUTE_SECOND);?

SELECT DATE_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND);?
SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);?

CURRENT_DATE:以‘YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取決于函數(shù)在一個(gè)字符串還是數(shù)字上下文被使用。
select CURDATE();?

CURRENT_TIME:以‘HH:MM:SS’或HHMMSS格式返回當(dāng)前時(shí)間值
select CURTIME();?

NOW():以‘YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回當(dāng)前的日期和時(shí)間?
select NOW();?


四、控制流程函數(shù) ?

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END?
在第一個(gè)方案的返回結(jié)果中, value=compare-value。而第二個(gè)方案的返回結(jié)果是第一種情況的真實(shí)結(jié)果。如果沒(méi)有匹配的結(jié)果值,則返回結(jié)果為ELSE后的結(jié)果,如果沒(méi)有ELSE 部分,則返回值為 NULL。
SELECT CASE 11 WHEN 1 THEN 'one'
WHEN 2 THEN 'two' ELSE 'more' END;
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

SELECT CASE BINARY 'B'
WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;


IF(expr1,expr2,expr3)?
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值為expr2; 否則返回值則為 expr3。IF() 的返回值為數(shù)字值或字符串值,具體情況視其所在語(yǔ)境而定。
SELECT IF(1>2,2,3);
SELECT IF(1<2,'yes ','no');
SELECT IF(STRCMP('test','test1'),'no','yes');

Strcmp(str1,str2):如果str1>str2返回1,str1=str2反回0,str1<str2返回-1)

STRCMP(expr1,expr2)?

如果字符串相同,STRCMP()返回0,如果第一參數(shù)根據(jù)當(dāng)前的排序次序小于第二個(gè),返回-1,否則返回1。
select STRCMP('text', 'text2');?
select STRCMP('text2', 'text');?
select STRCMP('text', 'text');


? 五、系統(tǒng)信息函數(shù)

系統(tǒng)信息函數(shù)用來(lái)查詢MySQL數(shù)據(jù)庫(kù)的系統(tǒng)信息。例如,查詢數(shù)據(jù)庫(kù)的版本,查詢數(shù)據(jù)庫(kù)的當(dāng)前用戶等。本小節(jié)將詳細(xì)講解系統(tǒng)信息函數(shù)的作用和使用方法。

獲取MySQL版本號(hào)、連接數(shù)、數(shù)據(jù)庫(kù)名的函數(shù)

VERSION()函數(shù)返回?cái)?shù)據(jù)庫(kù)的版本號(hào);


CONNECTION_ID()函數(shù)返回服務(wù)器的連接數(shù),也就是到現(xiàn)在為止MySQL服務(wù)的連接次數(shù);


DATABASE()和SCHEMA()返回當(dāng)前數(shù)據(jù)庫(kù)名。


獲取用戶名的函數(shù)

USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()和CURRENT_USER這幾個(gè)函數(shù)可以返回當(dāng)前用戶的名稱。


獲取字符串的字符集和排序方式的函數(shù)

CHARSET(str)函數(shù)返回字符串str的字符集,一般情況這個(gè)字符集就是系統(tǒng)的默認(rèn)字符集;COLLATION(str)函數(shù)返回字符串str的字符排列方式。



獲取最后一個(gè)自動(dòng)生成的ID值的函數(shù)
LAST_INSERT_ID()函數(shù)返回最后生成的AUTO_INCREMENT值。


六、加密函數(shù)

加密函數(shù)是MySQL中用來(lái)對(duì)數(shù)據(jù)進(jìn)行加密的函數(shù)。因?yàn)閿?shù)據(jù)庫(kù)中有些很敏感的信息不希望被其他人看到,就應(yīng)該通過(guò)加密方式來(lái)使這些數(shù)據(jù)變成看似亂碼的數(shù)據(jù)。例如用戶的密碼,就應(yīng)該經(jīng)過(guò)加密。本小節(jié)將詳細(xì)講解加密函數(shù)的作用和使用方法。
下面是各種加密函數(shù)的名稱、作用和使用方法。

加密函數(shù)PASSWORD(str)
PASSWORD(str)函數(shù)可以對(duì)字符串str進(jìn)行加密。一般情況下,PASSWORD(str)函數(shù)主要是用來(lái)給用戶的密碼加密的。下面使用PASSWORD(str)函數(shù)為字符串“abcd”加密。

加密函數(shù)MD5(str)

MD5(str)函數(shù)可以對(duì)字符串str進(jìn)行加密。MD5(str)函數(shù)主要對(duì)普通的數(shù)據(jù)進(jìn)行加密。下面使用MD5(str)函數(shù)為字符串“abcd”加密。


加密函數(shù)ENCODE(str,pswd_str)
ENCODE(str,pswd_str)函數(shù)可以使用字符串pswd_str來(lái)加密字符串str。加密的結(jié)果是一個(gè)二進(jìn)制數(shù),必須使用BLOB類型的字段來(lái)保存它。
解密函數(shù)
DECODE(crypt_str,pswd_str)函數(shù)可以使用字符串pswd_str來(lái)為crypt_str解密。crypt_str是通過(guò)ENCODE(str,pswd_str)加密后的二進(jìn)制數(shù)據(jù)。字符串pswd_str應(yīng)該與加密時(shí)的字符串pswd_str是相同的。下面使用DECODE(crypt_str,pswd_str)為ENCODE(str,pswd_str)加密的數(shù)據(jù)解密。

七、其它函數(shù)

格式化函數(shù)FORMAT(x,n)

FORMAT(x,n)函數(shù)可以將數(shù)字x進(jìn)行格式化,將x保留到小數(shù)點(diǎn)后n位。這個(gè)過(guò)程需要進(jìn)行四舍五入。例如FORMAT(2.356,2)返回的結(jié)果將會(huì)是2.36;FORMAT(2.353,2)返回的結(jié)果將會(huì)是2.35。下面使用FORMAT(x,n)函數(shù)來(lái)講235.3456和235.3454進(jìn)行格式化,都保留到小數(shù)點(diǎn)后3位。

不同進(jìn)制的數(shù)字進(jìn)行轉(zhuǎn)換的函數(shù)

ASCII(s)返回字符串s的第一個(gè)字符的ASCII碼;BIN(x)返回x的二進(jìn)制編碼;HEX(x)返回x的十六進(jìn)制編碼;OCT(x)返回x的八進(jìn)制編碼;CONV(x,f1,f2)將x從f1進(jìn)制數(shù)變成f2進(jìn)制數(shù)。

和下面的
IP地址與數(shù)字相互轉(zhuǎn)換的函數(shù)

INET_ATON(IP)函數(shù)可以將IP地址轉(zhuǎn)換為數(shù)字表示;INET_NTOA(n)函數(shù)可以將數(shù)字n轉(zhuǎn)換成IP的形式。其中,INET_ATON(IP)函數(shù)中IP值需要加上引號(hào)。這兩個(gè)函數(shù)互為反函數(shù)。


加鎖函數(shù)和解鎖函數(shù)

GET_LOCT(name,time)函數(shù)定義一個(gè)名稱為nam、持續(xù)時(shí)間長(zhǎng)度為time秒的鎖。如果鎖定成功,返回1;如果嘗試超時(shí),返回0;如果遇到錯(cuò)誤,返回NULL。RELEASE_LOCK(name)函數(shù)解除名稱為name的鎖。如果解鎖成功,返回1;如果嘗試超時(shí),返回0;如果解鎖失敗,返回NULL;IS_FREE_LOCK(name)函數(shù)判斷是否使用名為name的鎖。如果使用,返回0;否則,返回1。
重復(fù)執(zhí)行指定操作的函數(shù)

BENCHMARK(count,expr)函數(shù)將表達(dá)式expr重復(fù)執(zhí)行count次,然后返回執(zhí)行時(shí)間。該函數(shù)可以用來(lái)判斷MySQL處理表達(dá)式的速度。


改變字符集的函數(shù)

CONVERT(s USING cs)函數(shù)將字符串s的字符集變成cs

CAST(x AS type)和CONVERT(x,type)這兩個(gè)函數(shù)將x變成type類型。這兩個(gè)函數(shù)只對(duì)BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER這些類型起作用。但兩種方法只是改變了輸出值的數(shù)據(jù)類型,并沒(méi)有改變表中字段的類型。

轉(zhuǎn)載于:https://www.cnblogs.com/zhanghaiyang/p/7213367.html

總結(jié)

以上是生活随笔為你收集整理的Mysql学习总结(5)——MySql常用函数大全讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。