(七)運(yùn)算符與函數(shù)


1、字符函數(shù)

函數(shù)名稱 | 描述
----|------|----
CONCAT() | 字符連接
CONCAT_WS() | 使用指定的分隔符進(jìn)行字符連接
FORMAT() | 數(shù)字格式化
LOWER() | 轉(zhuǎn)換成小寫字母
UPPER() | 轉(zhuǎn)換成大寫字母
LEFT() | 獲取左側(cè)字符
RIGHT() | 獲取右側(cè)字符
LENGTH() | 獲取字符串長度
LTRIM() | 刪除前導(dǎo)空格
RTRIM() | 刪除后續(xù)空格
TRIM() | 刪除前導(dǎo)和后續(xù)空格
SUBSTRING() | 字符串截取
[NOT] LIKE() | 模式匹配
REPLACE() | 字符串替換

函數(shù)CONCAT()

創(chuàng)建數(shù)據(jù)表“name”并插入記錄:


查看該表數(shù)據(jù):


要求查詢的結(jié)果同時輸出“first_name”與“l(fā)ast_name”:


使用“concat()”連接,并賦予別名:


函數(shù)CONCAT_WS()

函數(shù)CONCAT_WS()要求至少有3個參數(shù),第一個是參數(shù)是指定的分隔符,例如“.”,后續(xù)的參數(shù)是要連接的數(shù)據(jù):

函數(shù)FORMAT()

函數(shù)FORMAT()可以將數(shù)字格式化為字符型,“,”之后的數(shù)字為保留到幾位小數(shù):

函數(shù)LOWER()、UPPER()

函數(shù)LOWER()可以將數(shù)據(jù)轉(zhuǎn)化為純小寫字母:

函數(shù)UPPER()可以將數(shù)據(jù)轉(zhuǎn)化為純大寫字母:


函數(shù)LEFT()、RIGHT()

函數(shù)LEFT()參數(shù)中“,”的數(shù)字為從左側(cè)獲取幾位字符:

函數(shù)RIGHT()參數(shù)中“,”的數(shù)字為從右側(cè)獲取幾位字符,還可以進(jìn)行函數(shù)的嵌套,將獲取的字符進(jìn)行小寫轉(zhuǎn)化:


函數(shù)LENGTH()

函數(shù)LENGTH()可以獲取字符串的長度,注意空格也算在長度之內(nèi):

函數(shù)LTRIM()、RTRIM()、TRIM()

函數(shù)LTRIM()可以將第一個字符前的空格刪除:

函數(shù)RTRIM()可以將最后一個字符后的空格刪除:


函數(shù)TRIM()可以將字符前后的空格都刪除:


除此之外,函數(shù)TRIM()還可以刪除特定字符,例如使用“LEADING”刪除前導(dǎo)特定字符:

使用“TRAILING”刪除后續(xù)特定字符:


使用“BOTH”刪除前導(dǎo)及后續(xù)特定字符:


函數(shù)SUBSTRING()

函數(shù)SUBSTRING()可以截取字符串,參數(shù)分別是要截取的內(nèi)容,從第幾位開始截取,截取幾位;要注意的是MySQL是從1開始,與Java從0開始不同:

如果只注明從第幾位開始截取,那么SUBSTRING()會一直截取到字符串的結(jié)尾:

SUBSTRING()的起始位置參數(shù)還可以是負(fù)值,代表從末尾開始倒數(shù)的第幾位;但要注意,截取的長度不能是負(fù)值,否則結(jié)果為空:

函數(shù)[NOT] LIKE()

函數(shù)LIKE()可以模糊匹配,使用通配符“_”或“%”,“_”指任意一個字母;“%”指任意大于0個字母:

查看數(shù)據(jù)表“user”中的詳細(xì)記錄:

例如查找姓名第4個字母為“e”的用戶記錄:


每一條“_”代表一位字母
每一條“_”代表一位字母

例如查找姓名中含有字母“o”的用戶記錄:


“%”代表不限制字母數(shù)量
“%”代表不限制字母數(shù)量

查看數(shù)據(jù)表“name”中的詳細(xì)記錄:


查詢帶有“%”符號的記錄:


結(jié)果出現(xiàn)了未帶有“%”的記錄,原因是系統(tǒng)將3個“%”全部認(rèn)為是通配符,因此,可以在中間的“%”前加轉(zhuǎn)義字符“\”,使系統(tǒng)認(rèn)為其只是普通的“%”符號,沒有特殊意義:


函數(shù)REPLACE()

之前的LTRIM()、RTRIM()、TRIM()只能對字符之前或之后的空格進(jìn)行處理,而對于字符中間的空格則無能為力,對此可以使用REPLACE()進(jìn)行替換,其參數(shù)分別是待處理的字符串,要替換的字符,替換后的字符:


而且要替換的字符及替換后的字符數(shù)量并沒有限制:



2、數(shù)值運(yùn)算符與函數(shù)

數(shù)值運(yùn)算符即常見的:+、-、x、/等等,這里不做詳細(xì)的演示,而函數(shù)如下表所示:

函數(shù)名稱 | 描述
----|------|----
CEIL() | 進(jìn)一取整
DIV | 整數(shù)除法
FLOOR() | 舍一取整
MOD | 取余數(shù)
POWER() | 冪運(yùn)算
ROUND() | 四舍五入
TRUNCATE() | 數(shù)字截取

函數(shù)CEIL()、FLOOR()

只要小數(shù)點(diǎn)后有位數(shù),函數(shù)CEIL()就向上取整;而函數(shù)FLOOR()則剛好相反,會向下取整:


函數(shù)DIV

函數(shù)DIV進(jìn)行整數(shù)除法,結(jié)果只保留到整數(shù):


函數(shù)MOD

函數(shù)MOD進(jìn)行取余數(shù)與取模相同,對于整數(shù)或浮點(diǎn)數(shù)都適用:


函數(shù)POWER()

函數(shù)POWER()即冪運(yùn)算,例如求2的12次方:


函數(shù)ROUND()

函數(shù)ROUND()就是常見的四舍五入,參數(shù)分別是待處理的數(shù)據(jù)以及要保留幾位小數(shù),例如對3.652分別保留2位、1位以及取整:


函數(shù)TRUNCATE()

函數(shù)TRUNCATE()即數(shù)字截斷,參數(shù)分別是待處理的數(shù)據(jù)以及要保留幾位小數(shù),與ROUND()不同,TRUNCATE()會直接去掉被截斷的數(shù)字,例如對3.652分別保留2位、1位以及取整:


最后的“-1”會在將小數(shù)點(diǎn)后所有位數(shù)都截掉的基礎(chǔ)上,再將小數(shù)點(diǎn)前1位進(jìn)行清零操作
最后的“-1”會在將小數(shù)點(diǎn)后所有位數(shù)都截掉的基礎(chǔ)上,再將小數(shù)點(diǎn)前1位進(jìn)行清零操作

3、比較運(yùn)算符與函數(shù)

函數(shù)名稱 | 描述
----|------|----
[NOT] BETWEEN……AND…… | [不]在……范圍之內(nèi)
[NOT] IN() | [不]在列出值范圍內(nèi)
IS [NOT] NULL | [不]為空

函數(shù)[NOT] BETWEEN……AND……

查看數(shù)據(jù)表“user”中的詳細(xì)記錄:

查找年齡在14歲至28歲之間的用戶記錄:


函數(shù)[NOT] IN()

函數(shù)[NOT] IN()括號中的內(nèi)容就是列出值的范圍:


“1”代表TRUE,“0”代表FALSE
“1”代表TRUE,“0”代表FALSE

函數(shù)IS [NOT] NULL

查看數(shù)據(jù)表“name”:


查找姓名為空的記錄:



4、日期時間函數(shù)

函數(shù)名稱 | 描述
----|------|----
NOW() | 當(dāng)前時間和日期
CURDATE() | 當(dāng)前日期
CURTIME() | 當(dāng)前時間
DATE_ADD() | 日期變化
DATEDIFF() | 日期差值
DATE_FORMAT() | 日期格式化

函數(shù)NOW()、CURDATE()、CURTIME()

函數(shù)NOW()返回當(dāng)前查詢時的日期及時間,而函數(shù)CURDATE()、CURTIME()則是分別顯示日期或時間:


函數(shù)DATE_ADD()

函數(shù)DATE_ADD()可以對日期進(jìn)行增減,參數(shù)為代修改的日期以及要增減的量,常用的關(guān)鍵詞有YEAR、MONTH、WEEK、DAY等:



可用關(guān)鍵詞
可用關(guān)鍵詞

函數(shù)DATEDIFF()

函數(shù)DATEDIFF()可以計算日期之間差值,例如2016年6月28日距離現(xiàn)在相差多少:


函數(shù)DATE_FORMAT()

函數(shù)DATE_FORMAT()可以轉(zhuǎn)換日期的格式:


可用說明符
可用說明符

5、信息函數(shù)

函數(shù)名稱 | 描述
----|------|----
CONNECTION_ID() | 連接ID
DATABASE() | 當(dāng)前數(shù)據(jù)庫
LAST_INSERT_ID() | 最后插入記錄的ID
USER() | 當(dāng)前用戶
VERSION() | 版本信息

函數(shù)CONNECTION_ID()

函數(shù)CONNECTION_ID()可以返回MySQL服務(wù)器的連接數(shù),也就是到目前為止MySQL服務(wù)的連接次數(shù),每個連接都有各自唯一的ID:


函數(shù)DATABASE()

函數(shù)DATABASE()顯示當(dāng)前數(shù)據(jù)庫:


函數(shù)LAST_INSERT_ID()

函數(shù)LAST_INSERT_ID()需要有類似“ID”的自動編號字段:


因此對數(shù)據(jù)表“name”加以改造:


添加一條新記錄,此時“id”編號自增應(yīng)為5,查詢最后插入記錄的ID,結(jié)果確實(shí)是5:


如果一次插入多條記錄,那么只會查詢到多條記錄中第一條插入記錄的ID:


函數(shù)USER()、VERSION()

函數(shù)USER()、VERSION()分別顯示登錄的用戶名及MySQL版本信息:



6、聚合函數(shù)

函數(shù)名稱 | 描述
----|------|----
AVG() | 平均值
COUNT() | 計數(shù)
MAX() | 最大值
MIN() | 最小值
SUM() | 求和

聚合函數(shù)都只有一個返回值,下列演示都使用數(shù)據(jù)表“tdb_goods”:


函數(shù)AVG()

求所有商品的平均價格:


還可以使用函數(shù)ROUND()對其進(jìn)行四舍五入,并保留2為小數(shù):


函數(shù)COUNT()

求商品的總數(shù)量:


函數(shù)MAX()

求最高的商品價格:


函數(shù)MIN()

求最低的商品價格:


函數(shù)SUM()

求所有商品的總價格:



7、加密函數(shù)

函數(shù)名稱 | 描述
----|------|----
MD5() | 信息摘要算法
PASSWORD() | 密碼算法

函數(shù)MD5()

函數(shù)MD5()為計算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù):

結(jié)果共32位
結(jié)果共32位

  如果該數(shù)據(jù)庫中的信息是用于日后的WEB應(yīng)用,建議都使用MD5進(jìn)行加密。

函數(shù)PASSWORD()

函數(shù)PASSWORD()更多的用于密碼的計算:


結(jié)果共32位
結(jié)果共32位

例如修改MySQL用戶的登錄密碼:


驗(yàn)證原密碼能否登陸:


提示密碼錯誤
提示密碼錯誤

使用修改后的密碼“root”進(jìn)行登錄:


成功進(jìn)入MySQL界面
成功進(jìn)入MySQL界面

8、運(yùn)算符與函數(shù)匯總:

  • 字符函數(shù)

函數(shù)名稱 | 描述
----|------|----
CONCAT() | 字符連接
CONCAT_WS() | 使用指定的分隔符進(jìn)行字符連接
FORMAT() | 數(shù)字格式化
LOWER() | 轉(zhuǎn)換成小寫字母
UPPER() | 轉(zhuǎn)換成大寫字母
LEFT() | 獲取左側(cè)字符
RIGHT() | 獲取右側(cè)字符
LENGTH() | 獲取字符串長度
LTRIM() | 刪除前導(dǎo)空格
RTRIM() | 刪除后續(xù)空格
TRIM() | 刪除前導(dǎo)和后續(xù)空格
SUBSTRING() | 字符串截取
[NOT] LIKE() | 模式匹配
REPLACE() | 字符串替換

  • 數(shù)值運(yùn)算符與函數(shù)

函數(shù)名稱 | 描述
----|------|----
CEIL() | 進(jìn)一取整
DIV | 整數(shù)除法
FLOOR() | 舍一取整
MOD | 取余數(shù)
POWER() | 冪運(yùn)算
ROUND() | 四舍五入
TRUNCATE() | 數(shù)字截取

  • 比較運(yùn)算符與函數(shù)

函數(shù)名稱 | 描述
----|------|----
[NOT] BETWEEN……AND…… | [不]在……范圍之內(nèi)
[NOT] IN() | [不]在列出值范圍內(nèi)
IS [NOT] NULL | [不]為空

  • 日期時間函數(shù)

函數(shù)名稱 | 描述
----|------|----
NOW() | 當(dāng)前時間和日期
CURDATE() | 當(dāng)前日期
CURTIME() | 當(dāng)前時間
DATE_ADD() | 日期變化
DATEDIFF() | 日期差值
DATE_FORMAT() | 日期格式化

  • 信息函數(shù)

函數(shù)名稱 | 描述
----|------|----
CONNECTION_ID() | 連接ID
DATABASE() | 當(dāng)前數(shù)據(jù)庫
LAST_INSERT_ID() | 最后插入記錄的ID
USER() | 當(dāng)前用戶
VERSION() | 版本信息

  • 聚合函數(shù)

函數(shù)名稱 | 描述
----|------|----
AVG() | 平均值
COUNT() | 計數(shù)
MAX() | 最大值
MIN() | 最小值
SUM() | 求和

  • 加密函數(shù)

函數(shù)名稱 | 描述
----|------|----
MD5() | 信息摘要算法
PASSWORD() | 密碼算法


版權(quán)聲明:歡迎轉(zhuǎn)載,歡迎擴(kuò)散,但轉(zhuǎn)載時請標(biāo)明作者以及原文出處,謝謝合作!             ↓↓↓
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容