mysql基本函數總結

詳細的列舉一下

USE test11;



select *,DATE_FORMAT(t,'%Y%m') from test01;
select DATE_FORMAT(t,'%Y%U') weeks,name  ,sum(x) as 銷售額  from test01 group by weeks;  
select DATE_FORMAT(t,'%Y%m%d') days ,name ,sum(x) as 銷售額 from test01 group by days;  
select DATE_FORMAT(t,'%Y%m') months,name ,sum(x)  as 銷售額 from test01 group by months ; 


-- 按人按月查詢銷售額 
SELECT NAME, SUM(x), DATE_FORMAT(t, '%Y-%M') FROM test01 GROUP BY DATE_FORMAT(t, '%Y-%M');

-- 按人按日查詢銷售額 
SELECT NAME, SUM(x), DATE_FORMAT(t, '%Y-%M-%d') FROM test01 GROUP BY DATE_FORMAT(t, '%Y-%M-%d');

SELECT * FROM test01;

-- weelday (date) 返回0 - 6對應星期天到星期一
SELECT *, WEEKDAY(t) FROM test01 WHERE WEEKDAY(t) >= 5;

-- MONTH (date) 返回月中的日期 1 - 12 
SELECT *, MONTH (t) FROM test01 WHERE MONTH (t) = 9;


-- all查詢所有 默認爲all;
SELECT ALL NAME FROM test01;

-- DISTINCT表示除去重複的 
SELECT DISTINCT  NAME FROM test01; ditinct


#聲明存儲過程
DELIMITER //
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM test11.test01;
    END
    //
DELIMITER ;

#調用proc
CALL myproc(@p_out);
SELECT @p_out;



#查看存儲過程

#全部數據庫
 show procedure status;
#指定數據庫 
 select `name` from mysql.proc where db = 'test11' and `type` = 'PROCEDURE'

select DATE_FORMAT('2017-10-19','%y');
#日期格式查詢
select *,DATE_FORMAT(t,'%Y%m') from test01;
select DATE_FORMAT(t,'%Y%U') weeks,name  ,sum(x) as 銷售額  from test01 group by weeks;  
select DATE_FORMAT(t,'%Y%m%d') days ,name ,sum(x) as 銷售額 from test01 group by days;  
select DATE_FORMAT(t,'%Y%m'); months,name ,sum(x)  as 銷售額 from test01 group by months ; 
#時間差
 SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
#提取日期
SELECT DATE('2003-12-31 01:02:03');
#返回date 對應的工作日名稱。
SELECT DAYNAME('2017-10-19');
#返回date 對應的該月日期,範圍是從 1到31。
SELECT DAYOFMONTH('1998-02-08');
#返回date 對應的一年中的天數,範圍是從 1到366。
SELECT DAYOFYEAR('1998-02-03');
#返回date 對應的月份,範圍時從 1 到 12
SELECT MONTH('1998-02-03');
 #返回date 對應月份的全名
SELECT MONTHNAME('1998-02-05');

#返回date 對應的一年中的季度值,範圍是從 1到 4。 daarter
SELECT QUARTER('2017-10-19');
#查詢星期
select week('2017-10-19');
#查詢月份
select MONTH('2017-10-19');
#返回一個星期的天數0-6 禮拜天是0--禮拜六6 正常星期加1
select WEEKDAY('2017-10-19');
#返回一個星期的天數1-7 禮拜天是1--禮拜六7 正常星期減1
select DAYOFWEEK('2017-10-21');

數學函數

    1).求絕對值

        例子:select Weight-50,abs(Weight-50),abs(-5.38) from person;

    2).求指數

        例子:select Weight,power(Weight,-0.5),power(Weight,2),power(Weight,3),power(Weight,4) from person;

    3).求平方根

        例子:select Weight,sqrt(Weight) from person;

    4).求隨機數

        例子:select rand();

    5).舍入到最大整數

        例子:select Name,Weight,ceiling(Weight),ceiling(Weight*-1) from person;

    6).舍入到最小整數

        例子:select Name,Weight,floor(Weight),floor(Weight*-1) from person;

    7).四捨五入

        round()函數的用法:兩個參數的和一個參數的

        兩個參數:round(m,d),m爲待進行四捨五入的數值,而d則爲計算精度.d還可以取負值.
        例子:select Name,Weight,round(Weight,1),round(Weight*-1,0),round(Weight,-1) from person;

        一個參數:round(m),相當於d=0
        例子:select Name,Weight,round(Weight),round(Weight*-1) from person;

    8).求正弦值

        例子:select Name,Weight,sin(Weight) from person;

    9).求餘弦值

        例子:select Name,Weight,cos(Weight) from person;

    10).求反正弦值

        例子:select Name,Weight,asin(1/Weight) from person;

    11).求反餘弦值

        例子:select Name,Weight,acos(1/Weight) from person;

    12).求正切值

        例子:select Name,Weight,tan(Weight) from person;

    13).求反正切值

        例子:select Name,Weight,atan(Weight) from person;

    14).求X/Y的反正切值

        例子:select Name,Weight,atan2(Weight,2) from person;

    15).求餘切

        例子:select Name,Weight,cot(Weight) from person;

    16).求圓周率pi

        例子:select Name,Weight,Weight*pi(),pi() from person;  

    17).弧度制轉換爲角度制

        例子:select Name,Weight,degrees(Weight) from person; 

    18).角度制轉換爲弧度制

        例子:select Name,Weight,radians(Weight) from person; 

    19).求符號

        數值大於0返回1,等於0返回0,小於0返回-1
        例子:select Name,Weight-48.68,sign(Weight-48.68) from person; 

    20).求整除餘數

        例子:select Name,Weight,mod(Weight,5) from person;

    21).求自然對數

        例子:select Name,Weight,log(Weight) from person;

    22).求以10爲底的對數

        例子:select Name,Weight,log10(Weight) from person;

字符串函數


    1).計算字符串長度

        例子:select Name,length(Name) from person;

    2).轉換爲小寫

        例子:select Name,lower(Name) from person;

    3).轉換爲大寫

        例子:select Name,upper(Name) from person;

    4).截去字符串左側空格

        例子:select Name,ltrim(Name),ltrim('   abc   ') from person;

    5).截去字符串左側空格

        例子:select Name,rtrim(Name),rtrim('   abc   ') from person;

    6).截去字符串兩側空格

        例子:select Name,trim(Name),trim('   abc   ') from person;

    7).取子字符串

        第二個參數是截取的起始位置,第三個參數是長度
        例子:select substring('abcdef111',2,3);
             select Name,substring(Name,2,3) from person;

    8).計算子串的位置

        例子:select Name,instr(Name,'m'),instr(Name,'ly') from person;

    9).從左側開始取字串

        例子:select Name,left(Name,3),left(Name,2) from person;

    10).從右側開始取字串

        例子:select Name,right(Name,3),right(Name,2) from person; 

    11).字符串替換

        第一個參數是字符串,第二個是要被替換的子串,第三個是想要替換的子串.
        這個函數第三個參數如果爲空串的話相當於刪除操作了.

        例子:select Name,replace(Name,'i','e'),IDNumber, replace(IDNumber,'2345','abcd') from person; 

    12).得到字符的ASCII碼

        ASCII()函數用來得到一個字符的ASCII碼,有且只有一個參數,如果參數爲一個字符串則函數返回第一個字符 的ASCII碼
        例子:select ASCII('a'),ASCII('abc');

    13).得到ASCII碼對應的字符

        例子:select char(56),char(90),'a',char(ASCII('a'));

    14).發音匹配

        soundex函數用於計算一個字符串的發音特徵值,這個特徵值爲一個四個字符的字符串,特徵值的第一個字符總是初始字符串中的第一個字符,而其後則是一個三位數字的數值。
        例子:select soundex('jack'),soundex('jeck'),soundex('joke'),soundex('juke'),soundex('look'),soundex('jobe');

             select name,soundex(name) from person;

日期時間函數


    1).獲取當前日期時間

        例子:select now(),sysdate(),current_timestamp;

    2).獲取當前日期

        例子:select curdate(),current_date;  

    3).獲取當前時間

        例子:select curtime(),current_time;  

    4).日期增減

        函數:date_add(date,interval expr type);它的別名是adddate()

        例子:select BirthDay,date_add(BirthDay,interval 1 
             week) as w1,date_add(BirthDay,interval 2 month) as m2,date_add(BirthDay,interval 5 quarter) as q5 from person;

             select BirthDay,date_add(BirthDay,interval '3 2:10' DAY_MINUTE) as dm,date_add(BirthDay,interval 1-6 YEAR_MONTH) as ym from person;

    5).計算日期差

        例子:select RegDay,BirthDay,datediff(RegDay,BirthDay),datediff(BirthDay,RegDay) from person;

    6).計算一個日期是星期幾

        例子:select BirthDay,dayname(BirthDay),RegDay,dayname(RegDay) from person;

    7).取得日期的指定部分

        函數:date_format(date,format);

        例子:select BirthDay,date_format(BirthDay,'%y-%M %D %W') as bd,RegDay,date_format(RegDay,'%Y年%m月%e日') as rd from person;

    8).類型轉換

        函數:cast(expression as type)
             convert(expression,type)

        例子:select cast('-30' as signed) as sig,convert('36',unsigned integer) as usig, cast('2008-08-08' as date) as d,convert('08:09:10',time) as t;

    9).空值處理

        例子:select name,birthday,regday,coalesce(birthday,regday,'2008-08-08') as ImoortDay from person;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章