9)mysql常見函數(shù)

常用聚合函數(shù)

COUNT(*)/COUNT(col):計算符合條件的數(shù)據(jù)行數(shù)
SUM(col_name):      計算符合條件的數(shù)值列合計值
AVG(col_name):      計算符合條件的數(shù)值列平均值
MAX(col_name):      計算符合條件的任意列中數(shù)據(jù)的最大值
MIN(col_name):      計算符合條件的任意列中數(shù)據(jù)的最小值
常用時間函數(shù)1

CURDATE() / CURTIME():   返回當前日期 / 返回當前時間
NOW():                   返回當前的日期和時間

DATE_FORMAT(date, fmt):  按照fmt的格式,對日期date進行格式化
fmt格式為:
%Y:四位的年 %m:月份(00..12) %d:天(00..31)
%H:小時(00..24) %i分鐘(00..59) %s:秒(00..59)

SEC_TO_TIME(seconds):    把秒數(shù)轉(zhuǎn)換為(小時:分:秒)
TIME_TO_SEC(time):       把時間(小時:分:秒)轉(zhuǎn)換為秒數(shù)

示例
SELECT CURDATE(),CURTIME(),NOW();
輸出
curdate()   curtime()  now()                
----------  ---------  ---------------------
2019-08-21  08:49:50   2019-08-21 08:49:50  

示例
SELECT DATE_FORMAT(NOW(),'%Y--%m--%d  %H:%i:%s')
輸出
DATE_FORMAT(NOW(),'%Y--%m--%d  %H:%i:%s')  
-------------------------------------------
2019--08--21  09:04:16     
 
示例       
SELECT DATE_FORMAT(NOW(),'%Y--%m--%d')
輸出
DATE_FORMAT(NOW(),'%Y--%m--%d')  
---------------------------------
2019--08--21

示例          
SELECT DATE_FORMAT(NOW(),'%H:%i:%s')
輸出
DATE_FORMAT(NOW(),'%H:%i:%s')  
-------------------------------
09:06:10                       

示例
SELECT DATE_FORMAT(NOW(),'2010-01-01')
輸出
DATE_FORMAT(NOW(),'2010-01-01')  
---------------------------------
2010-01-01

示例
SELECT SEC_TO_TIME(3750)
輸出
sec_to_time(3750)  
-------------------
01:02:30          
 
示例
SELECT TIME_TO_SEC('1:2:30')
輸出
time_to_sec('1:2:30')  
-----------------------
                   3750
更多時間函數(shù)如下
DATEDIFF函數(shù)示例
DATE_ADD函數(shù)示例
EXTRACT函數(shù)示例
常用字符串函數(shù)
示例

創(chuàng)建test表格
CREATE TABLE test(
    title VARCHAR(20) NOT NULL,
    class_name VARCHAR(10) NOT NULL
)
插入數(shù)據(jù)
title                   class_name       
----------------------  -----------------
MySQL課程-79889           大數(shù)據(jù)        
MySQL課程-69546           Hbase            
PostgreSQL課程-43917      大數(shù)據(jù)        
MySQL課程-88343           MySQL            

SELECT *,CONCAT(title,class_name)
FROM test;
輸出
title                   class_name       concat(title,class_name)               
----------------------  ---------------  ---------------------------------------
MySQL課程-79889           大數(shù)據(jù)              MySQL課程-79889大數(shù)據(jù)             
MySQL課程-69546           Hbase            MySQL課程-69546Hbase                 
PostgreSQL課程-43917      大數(shù)據(jù)              PostgreSQL課程-43917大數(shù)據(jù)        
MySQL課程-88343           MySQL            MySQL課程-88343MySQL  


SELECT *,CONCAT_WS('||',title,class_name)
FROM test;
輸出
title                   class_name       CONCAT_ws('||',title,class_name)         
----------------------  ---------------  -----------------------------------------
MySQL課程-79889           大數(shù)據(jù)              MySQL課程-79889||大數(shù)據(jù)             
MySQL課程-69546           Hbase            MySQL課程-69546||Hbase                 
PostgreSQL課程-43917      大數(shù)據(jù)              PostgreSQL課程-43917||大數(shù)據(jù)        
MySQL課程-88343           MySQL            MySQL課程-88343||MySQL      


SELECT class_name,CHAR_LENGTH(class_name),LENGTH(class_name)
FROM test;
輸出
class_name       char_length(class_name)  length(class_name)  
---------------  -----------------------  --------------------
大數(shù)據(jù)                                 3                     9
Hbase                                 5                     5
大數(shù)據(jù)                                 3                     9
MySQL                                 5                     5


格式化為 ##.###.###,保留小數(shù)點后5位
SELECT FORMAT(12345.6789,5)
輸出
format(12345.6789,5)  
----------------------
12,345.67890       


SELECT LEFT('www.helloChina.com',3) AS a -- 從左邊起截取3位字符
    ,RIGHT('www.helloChina.com',3) AS b -- 從右邊起截取3位字符
    ,LEFT('今天是個好日子',3) AS c
    -- 如果沒有指定長度,則返回從從指定位置之后所有字符
    ,SUBSTRING('今天是個好日子',3) AS d 
    -- 指定長度4是偷,返回4個字符
    ,SUBSTRING('今天是個好日子',3,4) AS e
輸出
a       b       c          d                e             
------  ------  ---------  ---------------  --------------
www     com     今天是        是個好日子            是個好日                          


-- 截取課程標題里橫線之前的部分
SELECT title
    ,LOCATE('-',title) 
    ,SUBSTRING(title,1,LOCATE('-',title))   
    ,SUBSTRING(title,1,LOCATE('-',title)-1)
    ,SUBSTRING_INDEX(title,'-',1)
FROM test;
輸出
title                   LOCATE('-',title)  SUBSTRING(title,1,LOCATE('-',title))  SUBSTRING(title,1,LOCATE('-',title)-1)  SUBSTRING_INDEX(title,'-',1)  
----------------------  -----------------  ------------------------------------  --------------------------------------  ------------------------------
MySQL課程-79889                           8  MySQL課程-                              MySQL課程                                 MySQL課程                   
MySQL課程-69546                           8  MySQL課程-                              MySQL課程                                 MySQL課程                   
PostgreSQL課程-43917                     13  PostgreSQL課程-                         PostgreSQL課程                            PostgreSQL課程              
MySQL課程-88343                           8  MySQL課程-                              MySQL課程                                 MySQL課程                 


-- TRIM( [remstr FROM] str)從字符串str兩端刪除不必要的字符
SELECT TRIM('   hello  ')
    ,TRIM('x' FROM 'xxxhelloxxxxxxxxxxx')
輸出  
TRIM('   hello  ')  TRIM('x' FROM 'xxxhelloxxxxxxxxxxx')  
------------------  --------------------------------------
hello               hello     
示例
SELECT ROUND(123.456,2),RAND();
輸出第一次:
round(123.456,2)              rand()  
----------------  --------------------
123.46              0.8179619683120045
輸出第二次:
round(123.456,2)               rand()  
----------------  ---------------------
123.46              0.17371040785099418


創(chuàng)建測試表格 test_user
CREATE TABLE test_user(
    sex TINYINT NOT NULL
)
插入數(shù)據(jù)
INSERT test_user VALUES(0),(1),(0),(1),(2);

SELECT sex,
    CASE WHEN sex=1 THEN '男'
         WHEN sex=0 THEN '女'
         ELSE '未知'
    END AS '性別'
FROM test_user;
輸出
   sex  性別  
------  --------
     0  女     
     1  男     
     0  女     
     1  男     
     2  未知  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柄错,一起剝皮案震驚了整個濱河市孩擂,隨后出現(xiàn)的幾起案子涨共,更是在濱河造成了極大的恐慌,老刑警劉巖椒舵,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異约谈,居然都是意外死亡笔宿,警方通過查閱死者的電腦和手機犁钟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泼橘,“玉大人涝动,你說我怎么就攤上這事【婷穑” “怎么了醋粟?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長担败。 經(jīng)常有香客問我昔穴,道長,這世上最難降的妖魔是什么提前? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任吗货,我火速辦了婚禮,結(jié)果婚禮上狈网,老公的妹妹穿的比我還像新娘宙搬。我一直安慰自己,他們只是感情好拓哺,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布勇垛。 她就那樣靜靜地躺著,像睡著了一般士鸥。 火紅的嫁衣襯著肌膚如雪闲孤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天烤礁,我揣著相機與錄音讼积,去河邊找鬼。 笑死脚仔,一個胖子當著我的面吹牛勤众,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鲤脏,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼们颜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猎醇?” 一聲冷哼從身側(cè)響起窥突,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姑食,沒想到半個月后波岛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡音半,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年则拷,在試婚紗的時候發(fā)現(xiàn)自己被綠了贡蓖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡煌茬,死狀恐怖斥铺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坛善,我是刑警寧澤晾蜘,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站眠屎,受9級特大地震影響剔交,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜改衩,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一岖常、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葫督,春花似錦竭鞍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洽胶,卻和暖如春晒夹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姊氓。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工惋戏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人他膳。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像绒窑,于是被迫代替她去往敵國和親棕孙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355