目錄
MySQL常見函數(shù)
字符串函數(shù) 進行字符串操作的函數(shù)
算術函數(shù) 進行數(shù)值計算的函數(shù)
日期函數(shù) 進行日期操作的函數(shù)
轉換函數(shù) 進行數(shù)據(jù)類型和值轉換的函數(shù)
流程函數(shù)? 進行條件刪選
聚合函數(shù) 進行數(shù)據(jù)聚合的函數(shù)
謂詞 一般用于條件判斷
什么是函數(shù)
函數(shù)指一段可以直接被另一段程序調用的程序或代碼
MySQL常見函數(shù)
字符串函數(shù) 進行字符串操作的函數(shù)
MySQL常用的內置 字符串函數(shù)如下
CONCAT(S1,S2……Sn)????????? 字符串拼接函數(shù),將S1,S2……Sn拼接為一個字符串
LENGTH(str)??????????????????????? 字符串長度,顯示出字符串中包含多少個字符
LOWER(str)???????????????????????? 將字符串str全部轉為小寫
UPPER(str)????????????????????????? 將字符串str全部轉為大寫
REPLACE(str1,str2,str3)??????? 字符串替換,將str1中的str2部分替換為str3
LPAD(str,n,pad)?????????????????? 左填充,用字符串pad對str的左邊進行填充,使得str達到n個字符串長度
RPAD(str,n,pad)????????????????? 右填充,用字符串pad對str的右邊進行填充,使得str達到n個字符串長度
TRIM(str)???????????????????????????? 去掉字符串的頭部和尾部的空格
SUBSTRING(str,start,len)????? 返回字符串str從start位置起的len個長度的字符串(字符串的索引是從1開始的,而不是0)
update staff1 set number =? lpad(number,8,'0'); #修改number字段值,使用字符串”0”對其左填充,使得number達到8個字符串長度(注意:number的數(shù)據(jù)類型為varchar)
算術函數(shù) 進行數(shù)值計算的函數(shù)
MySQL常用的內置 算術函數(shù)如下
+(加法)、-(減法)、*(乘法)、/(除法)
ABS(x)?????????????????? 對x取絕對值
MOD(x,y)????????????? 返回x/y的模(余數(shù))
RAND()???????????????? 返回0~1內的隨機數(shù)
ROUND(x,y)????????? 求參數(shù)x的四舍五入的值,保留y位小數(shù)
CEIL(x)????????????????? 對x向上取整
FLOOR(x)????????????? 對x向下取整
select round(rand()*100000,0);?? #隨機生成5位數(shù)的驗證碼?????如果產生的小數(shù)0.012345,生成的驗證碼就只有4位數(shù)1234,因此需要補0 select lpad(round(rand()*100000,0),5,'0');? #補0
日期函數(shù) 進行日期操作的函數(shù)
MySQL常用的內置 日期函數(shù)如下
CURDATE()?????????? 返回當前日期(年月日)
CURTIME()??????????? 返回當前時間
NOW()????????????????? 返回當前日期和時間
YEAR(date)?????????? 獲取指定date(年月日)的年份
MONTH(date)?????? 獲取指定date(年月日)的月份
DAY(date)???????????? 獲取指定date(年月日)的天數(shù)
DATE_ADD(date , INTERVAL expr type)???? 在指定date(年月日)上增加expr(expr可以是年/月/日,具體是什么類型由type決定)
DATEDIFF(date1 , date2)???? 返回起始時間date1和結束時間date2之間的天數(shù)(date1-date2)
select date_add(now(),interval 20 day );??? #當前日期的20天之后的日期(month為月,year為年) select name,datediff(curdate(),entrydate) as 'date' from staff1 order by date desc;??? #根據(jù)入職時間(entrydate)推算出入職天數(shù),并按照倒序排序
轉換函數(shù) 進行數(shù)據(jù)類型和值轉換的函數(shù)
CAST(數(shù)據(jù)1 AS 數(shù)據(jù)類型1)????? 將數(shù)據(jù)1轉為數(shù)據(jù)類型1
COALESCE(數(shù)據(jù)1 , 數(shù)據(jù)2 ,…… )
主要由兩個用途:1、將NULL替換為其他的值
2、返回此數(shù)據(jù)列表中第一個非null表達式的值
select cast('001' as signed integer); #將字符串“001”轉換為有符號的整數(shù),顯示結果為1 select coalesce(number,0) from staff1;?? #查詢staff1表的number字段,并將此字段的NULL值替換為0 select coalesce(number,age,0) from staff1; #查詢staff1表的number字段;當number為null,age不為null時,number返回age的值;當number和age都為null時,返回0;當number為非null時,返回真實值
流程函數(shù)? 進行條件刪選
流程函數(shù)一般在SQL語句中實現(xiàn)條件篩選,從而提高語句的效率
MySQL常用的內置 流程函數(shù)如下
如果value(條件表達式)為true,則返回t,否則返回f
IF(vaule , t , f);? ? ? ? ? ? ? ? ? ? ?
如果value1(可以是某個記錄)不為空,則返回value1,負責返回value2
IFNULL(value1 , value2);? ? ??
如果val1為true,則返回res1;val2為true,返回res2;否則返回default
CASE
? WHEN?[val1 ] THEN [res1]
? WHEN [val2] THEN [res2]
? ?……
? ?ELSE [default]?
END;
如果espr的值等于val1,返回res1;espr的值等于val2,返回res2;否則返回default
CASE [expr]
? WHEN [val1] THEN [res1] ?
? WHEN [val2] THEN[res2]
? ……
? ELSE [default]
END;
select name,(case origo when '重慶' then '新一線城市' else '非一線城市' end) from staff1; #查詢staff1表的name和工作城市字段,如果工作城市為重慶,則顯示為新一線城市,其余為非一線城市
聚合函數(shù) 進行數(shù)據(jù)聚合的函數(shù)
聚合函數(shù)的使用在DQL的分組查詢有介紹
將一列數(shù)據(jù)作為一個整體,進行縱向計算(所有NULL值不參與計算)
count???? 統(tǒng)計數(shù)量(一列有多少個值)
max??????? 最大值(一列的最大值)
min??????? 最小值(一列的最小值)
avg???????? 平均值(一列的平均值)
sum??????? 求和(一列的所有數(shù)值求和)
聚合函數(shù)使用格式:
SELECT 聚合函數(shù) (字段列表) AS [別名] FROM 表名 [WHERE條件列表];
select COUNT(*) from emp;?? #統(tǒng)計這個表有多少行(由于Null不參與統(tǒng)計,可能每個列的統(tǒng)計數(shù)值不一致,其中會取最大值作為結果返回) select max(age) from emp;?? #統(tǒng)計age的最大值 select avg(age) from emp;?? #統(tǒng)計age的平均值
謂詞 一般用于條件判斷
謂詞的使用在DQL的條件查詢有介紹
謂詞,全名為比較謂詞;是一種需要滿足返回值為真值True的函數(shù)
BETWEEN … AND …???? 在某個范圍之內(左閉右閉)
IN(…)?????????????????????????? …為多個信息,in(…)表示只要滿足…中的某個信息就算匹配,為真值
NOT IN(…)?????????????????? …為多個信息,只要不滿足…的所有信息就算匹配,為真值
LIKE 占位符?????????????? 模糊匹配(_表示匹配單個字符、%表示匹配任意字符)(OR的簡便用法)
IS NULL?????????????????????? 表示NULL值
IS NOT NULL?????????????? 表示非NULL值
select * from staff1 where gender is null ;???? #查詢gender為null,并將其對應的所有字段的值都顯示出來 select * from staff1 where gender is not null ; #查詢gender為非null,并將其對應的所有字段的值都顯示出來 select * from staff1 where gender in ('男','女') ;??#查詢性別為男、或者性別為女的信息,并將其對應的所有字段的值都顯示出來 select * from staff1 where name like '__'? ;??????#查詢名稱為2個字符信息,并將其對應的所有字段的值都顯示出來 select * from staff1 where number between 20000100 and 20000102 #查詢number為20000100到20000102之間對應的信息,并將其對應的所有字段的值都顯示出來注意事項
對于IN來說,如果此運算符的兩側有一個為NULL,則返回結果只能是NULL或1;如果找不到匹配項則返回NULL;如果找到匹配項,則返回1;
對于NOT IN來說,如果此運算符的兩側有一個為NULL,則返回結果只能是NULL或0;如果找不到匹配項則返回NULL;如果找到匹配項,則返回0;文章來源:http://www.zghlxwxcb.cn/news/detail-605304.html
select null in (1,3) , null in (1,3,null); #結果為null 和 null select 10 in (1,null), 10 in (null,10); #結果為null 和 1 select 10 in (1,20), 10 in (1,10);????? #結果為0 和 1 select null not in (1,3) , null not in (1,3,null); #結果為null 和 null select 10 not in (1,null), 10 not in (null,10); #結果為null 和 0 select 10 not in (1,20), 10 not in (1,10);????? #結果為1 和 0MySQL基礎語法(DDL、DQL、DML、DCL)_靜下心來敲木魚的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/131913031?spm=1001.2014.3001.5502文章來源地址http://www.zghlxwxcb.cn/news/detail-605304.html
到了這里,關于MySQL函數(shù)講解(謂詞、CASE)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!