前言
MySQL函數是MySQL數據庫提供的內置函數,這些內置函數可以更方便處理表中的數據。下面簡單介紹一下MySQL中包含的幾類常用函數。
聚合函數
聚合函數可實現根據一組數據求出一個值,聚合函數的結果值只根據選定數據行中非NULL值進行計算,NULL值被忽略。
COUNT()函數
COUNT()函數,對於除“*”以外的任何參數,返回所選擇集合中非NULL值的行的數目;對於參數“*”,則返回所選擇集合中所有行的數目,包含NULL值的行。沒有WHERE子句的COUNT(*)是經過內部優化的,能夠快速地返回表中所有的記錄總數。
SUM()函數
SUM()函數可以求出表中某個字段取值的總和。
AVG函數
AVG()函數可以求出表中某個字段取值的平均值。
MAX()函數
MAX()函數可以求出表中某個字段值的最大值。
MIN()函數
MIN()函數可以求出表中某個字段值的最小值。
大家都是從學生時代過來的,下面使用學生信息表和成績表來演示上面的SQL函數。
#統計學生表記錄
SELECT COUNT(*) FROM tb_student;
#求學生分數總和
SELECT SUM(score) FROM tb_score;
#求學生的平均分
SELECT AVG(score) FROM tb_score;
#求成績的最高分
SELECT MAX(score) FROM tb_score;
#求成績的最低分
SELECT MIN(score) FROM tb_score;
數學函數
數學函數主要用於處理數字,包括整型和浮點數。下面介紹一下常用的幾個數學函數。
ABS()函數
ABS()可以求出某字段值的絕對值。
FLOOR()函數
FLOOR()函數用於返回小於或等於參數x的最大整數。
RAND()函數
RAND()函數用於返回0~1之間的隨機數。
TRUNCATE(x, y)函數
TRUNCATE(x, y)函數返回x保留到小數點後y位的值。
SQRT(x)函數
SQRT(x)函數用於求參數x的平方根。
下面看一下示例語句:
#求絕對值
SELECT ABS(5), ABS(-5);
#向下取整
SELECT FLOOR(1.5), FLOOR(-2);
#求隨機數
SELECT RAND(), RAND();
#求小數點後幾位
SELECT TRUNCATE(3.141592653, 3);
#求16,25的平方根
SELECT SQRT(16), SQRT(25);
字符串函數
字符串函數主要用來處理數據表中的字符串。下面介紹一下常用的幾個字符串函數。
UPPER(s)和UCASE(s)函數
UPPER(s)和UCASE(s)函數均可用於將字符串s中的所有哦字母變成大寫字母。
LEFT(s, n)函數
LEFT(s, n)函數返回字符串s的前n個字符。
SUBSTRING(s, n, len)函數
SUBSTRING(s, n, len)函數用於將字符串s的第n個位置開始獲取長度len的字符串。
下面看一下示例語句:
#轉換大寫
SELECT UPPER(‘hello’), UCASE(‘hello’);
#返回字符串的前n個字符
SELECT LEFT(‘hello’, 2);
#截取字符串
SELECT SUBSTRING(‘hello’, 2, 4);
日期和時間函數
日期和時間函數是MySQL中最常用的函數之一,主要用於對錶中的日期和時間數據進行處理。下面介紹一下幾個常用的日期和時間函數。
CURDATE()和CURRENT_DATE()函數
CURDATE()和CURRENT_DATE()函數獲取當前日期。
CURTIME()和CURRENT_TIME()函數
CURTIME()和CURRENT_TIME()函數獲取當前時間。
NOW()函數
NOW()函數可以獲取當前日期和時間,有同樣功能的還有CURRENT_TIMESTAMP()、LOCALTIME() 、SYSDATE()和LOCALTIMESTAMP()。
下面看一下示例語句:
#獲取當前日期
SELECT CURDATE(), CURRENT_DATE();
#獲取當前時間
SELECT CURTIME(), CURRENT_TIME();
#獲取當前日期和時間
SELECT NOW(), CURRENT_TIMESTAMP(), LOCALTIME(), SYSDATE(), LOCALTIMESTAMP();
其他函數
MySQL中除了上述介紹的幾類內置函數之外,還有很多其他函數,比如條件判斷函數,系統信息函數。下面列舉幾個常用的函數。
IF(expr, v1, v2)函數
IF(expr, v1, v2)函數是一種條件判斷函數,表示的如果表達式expr成立,則執行v1,否則執行v2。
IFNULL(v1, v2)函數
IFNULL(expr, v1, v2)函數也是一種條件判斷函數,表示的如果表達式v1不為空,則顯示v1的值,否則顯示v2的值。
VERSION()函數
VERSION()函數是一種系統信息函數,獲取數據庫的版本號。
下面看一下示(注意引號是英文狀態下):
#查詢分數的優秀情況
SELECT studentNo, courseNo, score, IF(score>85, ‘優秀’, ‘一般’) level FROM tb_score;
#判斷是否為空
SELECT IFNULL(1/0, '空');
#查看數據庫版本號
SELECT VERSION();
希望通過上面的操作能幫助大家學習到更多的MySQL知識。如果你有什麼好的意見,建議,或者有不同的看法,我都希望你留言和我們進行交流、討論。
如果想快速聯繫我,歡迎關注微信公眾號:AiryData。