日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL函数/数据库函数

發布時間:2023/12/3 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL函数/数据库函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、單行函數
    • (一)數學函數
      • 1. round(x),返回離 x 最近的整數,即對 x 進行四舍五入
      • 2. round(x,y),返回數值 x 保留到小數點后 y 位的值
      • 3. truncate(x,y),返回數值 x 保留到小數點后 y 位的值
      • 4. abs(x),返回 x 的絕對值
      • 5.sqrt(x),返回 x 的二次方根
      • 6.mod(x,y),返回 x 被 y 除后的余數
      • 7.ceil(x) 或 ceiling(x),返回不小于 x 的最小整數
      • 8.foor(x),返回不大于 x 的最大整數
      • 9. sign(x),返回參數 x 的符號,-1 表示負數,0 表示 0,1 表示正數
      • 10. pow(x,y) 或 power(x,y),返回 x 的 y 次乘方的值
      • 11. exp(x),返回 e 的 x 乘方后的值
      • 12. log(x),返回 x 的自然對數
      • 13. log10(x),返回 x 的基數為 10 的對數
      • 14. radians(x),返回 x 由角度轉化為弧度的值
      • 15. degrees(x),返回 x 由弧度轉化為角度的值
      • 16. sin(x),前者返回 x 的正弦,其中 x 為給定的弧度值
      • 17. asin(x),返回 x 的反正弦值,x 為正弦
      • 18. COS(x),返回 x 的余弦,其中 x 為給定的弧度值
      • 19. ACOS(x),返回 x 的反余弦值,x 為余弦
      • 20. tan(x),返回 x 的正切,其中 x 為給定的弧度值
      • 21. atan(x),返回 x 的反正切值,x 為正切
      • 22. cot(x),返回給定弧度值 x 的余切
    • (二)字符串函數
      • 1. left(s,n),返回字符串 s 左邊的 n 個字符
      • 2. concat(s1,s2,...,sn),將參數拼接成一個字符串
      • 3. concat_ws(x,s1,s2,...),返回多個字符串拼接之后的字符串,每個字符串之間有一個x
      • 4. char_length(str),計算字符串字符個數
    • (三)日期和時間函數
      • 1. STR_TO_DATE(string, format_mask),將字符串轉變為日期
      • 2. DATE_FORMAT(d,f),按表達式 f 的要求顯示日期 d
      • 3. now(),獲取當前的系統日期和時間
      • 4. dayofweek(date),返回日期 date 是星期幾
      • 5. dayname(date),返回日期 date 是星期幾
      • 6. time_to_sec(t),將時間 t 轉換為秒
      • 7. sec_to_time(s),將秒數 s 轉換成時間
      • 8. from_unixtime(unix_tiemstamp,format),把時間戳轉化成日期時間
      • 9. unix_timestamp(date),日期轉換成時間戳
    • (四)條件判斷函數
      • 1. case 語句
      • 2. ifnull(v1,v2),空值轉換函數
    • (五)其它函數
      • 1. coalesce(expr1, expr2, ...., expr_n),返回參數列表中第一個非空參數
      • 2. cast(x AS type),將 x 變成 type 類型
      • 3. inet_aton(expr),將IP地址轉成32位的二進制整數
      • 4.inet_ntoa(expr),將二進制整數轉成IP地址
  • 二、組函數
    • (一)數學函數
      • 1. count (expression),返回查詢的記錄總數
      • 2. avg(expression),返回一個表達式的平均值
      • 3. sum(expression),返回指定字段的總和
      • 4. max(expression),返回字段 expression 中的最大值
      • 5. min(expression),返回字段 expression 中的最小值

一、單行函數

單行函數是每行數據返回一行結果

(一)數學函數

1. round(x),返回離 x 最近的整數,即對 x 進行四舍五入

mysql> select round(455.476); +----------------+ | round(455.476) | +----------------+ | 455 | +----------------+ 1 row in set (0.00 sec)

2. round(x,y),返回數值 x 保留到小數點后 y 位的值

y 是要保留的小數位數,如果沒有指定 y,則默認是 0。

返回最接近 x 的數,其值保留到小數點后面 y 位,截取時會四舍五入。

mysql> select round(455.476,2); +------------------+ | round(455.476,2) | +------------------+ | 455.48 | +------------------+ 1 row in set (0.00 sec)

若 y 為負值,則會將小數點左邊 y 位的數舍棄為 0。截取時也會進行四舍五入。

mysql> select round(445.476,-2); +-------------------+ | round(445.476,-2) | +-------------------+ | 400 | +-------------------+ 1 row in set (0.00 sec)

445.476,小數點左邊的 2 位舍棄變成 0,因為從小數點向左數第 2 個數 4 不足以向前進數,所以最終的結果是 400。

mysql> select round(455.476,-2); +-------------------+ | round(455.476,-2) | +-------------------+ | 500 | +-------------------+ 1 row in set (0.00 sec)

因為從小數點向左數第 2 個數 5 足以向前進數,所以最終的結果是 500。

3. truncate(x,y),返回數值 x 保留到小數點后 y 位的值

與 round(x,y) 的區別是不會進行四舍五入。如果沒有第二個參數 , 默認是 0。

4. abs(x),返回 x 的絕對值

5.sqrt(x),返回 x 的二次方根

x 是一個非負數。

6.mod(x,y),返回 x 被 y 除后的余數

7.ceil(x) 或 ceiling(x),返回不小于 x 的最小整數

8.foor(x),返回不大于 x 的最大整數

9. sign(x),返回參數 x 的符號,-1 表示負數,0 表示 0,1 表示正數

10. pow(x,y) 或 power(x,y),返回 x 的 y 次乘方的值

11. exp(x),返回 e 的 x 乘方后的值

e 是自然對數的底數,是無理數,e 常用于對數,其值是 2.71828…

e = (1+1/n)n(1+1/n)^n(1+1/n)n,其中 n 趨向無窮大。隨著 n 的增大,底數 (1+1/n) 就會越來越接近 1,而指數 n 趨向無窮大,那 (1+1/n)n(1+1/n)^n(1+1/n)n 最后的結果到底是趨向于 1 還是無窮大呢?其實,是趨向于 2.718281828…,這是一個無限不循環小數。

什么是對數?
如果a的x次方等于N(a>0,且a≠1),那么數x叫做以a為底N的對數(logarithm),記作x=loga N。其中,a叫做對數的底數,N叫做真數。

12. log(x),返回 x 的自然對數

y = log(x),返回 x 的自然對數,即 x 相對于基數 e 的對數,eye^yey = x。

eye^yey = x,其中 y 叫做以 e 為底,真數為 x 的對數,這個 y 也叫自然對數。

自然對數就是以無理數 e 為底的對數,記為 lnN。

13. log10(x),返回 x 的基數為 10 的對數

y = log10(x),10y10^y10y = x,其中 y 就是以 10 為底數,真數為 x 的對數。

14. radians(x),返回 x 由角度轉化為弧度的值

15. degrees(x),返回 x 由弧度轉化為角度的值

16. sin(x),前者返回 x 的正弦,其中 x 為給定的弧度值

17. asin(x),返回 x 的反正弦值,x 為正弦

18. COS(x),返回 x 的余弦,其中 x 為給定的弧度值

19. ACOS(x),返回 x 的反余弦值,x 為余弦

20. tan(x),返回 x 的正切,其中 x 為給定的弧度值

21. atan(x),返回 x 的反正切值,x 為正切

22. cot(x),返回給定弧度值 x 的余切

(二)字符串函數

1. left(s,n),返回字符串 s 左邊的 n 個字符

返回字符串 runoob 中的前兩個字符:

SELECT LEFT('runoob',2) -- ru

2. concat(s1,s2,…,sn),將參數拼接成一個字符串

字符串 s1,s2 等多個字符串合并為一個字符串。
如果有任何一個參數為 null,則返回值為 null;如果所有參數都為非二進制字符串,則返回結果為非二進制字符串;如果有任何一個參數為二進制字符串,則返回結果為二進制字符串。

另外要注意數字參數會被轉換成等值的二進制數字符串,要避免此種情況,可以使用函數 cast()

合并多個字符串:

SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS concatenated_string;

3. concat_ws(x,s1,s2,…),返回多個字符串拼接之后的字符串,每個字符串之間有一個x

4. char_length(str),計算字符串字符個數

(三)日期和時間函數

1. STR_TO_DATE(string, format_mask),將字符串轉變為日期

相當于 Oracle 中的 to_date()。

日期時間格式:
%M 解析英文的月份,例如:August
%m 解析數字的月份

舉例如下:

mysql> SELECT STR_TO_DATE("August 10 2017", "%M %d %Y"); +-------------------------------------------+ | STR_TO_DATE("August 10 2017", "%M %d %Y") | +-------------------------------------------+ | 2017-08-10 | +-------------------------------------------+ 1 row in set (0.00 sec)mysql> INSERT INTO t_order(order_time) VALUES(str_to_date('2018-05-06','%Y-%m-%d')); mysql> UPDATE t_project SET start_date = STR_TO_DATE("2021-09-19","%Y-%m-%d") WHERE id = 00000000010;

將日期數據保存到 Date 類型的字段中:

mysql> INSERT INTO t_order(order_time) VALUES(str_to_date('2018-05-06','%Y-%m-%d')); mysql> UPDATE t_project SET start_date = STR_TO_DATE("2021-09-19","%Y-%m-%d") WHERE id = 00000000010; mysql> UPDATE t_project SET start_date = STR_TO_DATE("09-23-2019","%m-%d-%Y") WHERE id = 00000000010; mysql> UPDATE t_project SET start_date = STR_TO_DATE("09.23.2019","%m.%d.%Y") WHERE id = 00000000010;

注意:
STR_TO_DATE(字符串日期,解析格式)中的字符串日期要和解析格式一一對應。

2. DATE_FORMAT(d,f),按表達式 f 的要求顯示日期 d

這就是日期轉換成字符串的函數,相當于 Oracle 的 to_char()。

mysql> SELECT DATE_FORMAT(sysdate(),'%m-%d-%Y %r'); +--------------------------------------+ | DATE_FORMAT(sysdate(),'%m-%d-%Y %r') | +--------------------------------------+ | 06-04-2021 09:01:21 AM | +--------------------------------------+ 1 row in set (0.00 sec) mysql> select company_name,date_format(insert_time,'%Y,%m,%d') as insert_date from tf_company where company_name like '%建發%'; +-----------------------------------------+-------------+ | company_name | insert_date | +-----------------------------------------+-------------+ | 建發房地產集團上海有限公司 | 2021,02,21 | | 建發(上海)有限公司 | 2021,02,21 | | 建發房地產集團南京有限公司 | 2021,02,26 | +-----------------------------------------+-------------+ 3 rows in set (0.03 sec) mysql> SELECT DATE_FORMAT('2011-11-11 11:11:11','%m-%d-%Y %r'); +--------------------------------------------------+ | DATE_FORMAT('2011-11-11 11:11:11','%m-%d-%Y %r') | +--------------------------------------------------+ | 11-11-2011 11:11:11 AM | +--------------------------------------------------+ 1 row in set (0.00 sec)

說明:

  • 日期時間好像只能按年-月-日-時-分-秒的格式書寫,你如果寫成月-日-年,則無效
  • %Y-%m-%d %r 顯示格式則可以調整位置順序
  • 如下示例:

    mysql> SELECT DATE_FORMAT('11-11-2011 11:11:11','%Y-%m-%d %r'); +--------------------------------------------------+ | DATE_FORMAT('11-11-2011 11:11:11','%Y-%m-%d %r') | +--------------------------------------------------+ | NULL | +--------------------------------------------------+ 1 row in set, 1 warning (0.00 sec)

    也可以將日期轉換成字符串格式存到 Date 類型的字段中:

    mysql> UPDATE t_project SET start_date = DATE_FORMAT('2021-08-21','%Y-%m-%d') WHERE id = 00000000010;

    注意:
    1.Date 類型的字段只能按“年月日”格式保存
    2.DATE_FORMAT(日期,顯示格式),日期和顯示格式要一一對應,且只能按“年月日”的順序寫
    3.保存時不論分隔符是什么,查詢日期數據的顯示格式都是“年-月-日”

    mysql> select * from t_project; +-------------+--------+----------+------------+------------+ | id | no | name | start_date | end_date | +-------------+--------+----------+------------+------------+ | 00000000001 | pm0001 | pm000001 | 2008-01-02 | 2008-01-15 |

    3. now(),獲取當前的系統日期和時間

    了解詳情,猛戳《MySQL 獲取系統日期/系統時間的函數》

    4. dayofweek(date),返回日期 date 是星期幾

    mysql> select dayofweek('2016-01-16'); +-------------------------+ | dayofweek('2016-01-16') | +-------------------------+ | 7 | +-------------------------+ 1 row in set (0.03 sec)

    注意:星期天=1,星期一=2, … 星期六=7

    5. dayname(date),返回日期 date 是星期幾

    顯示英文名稱。

    mysql> select dayname('2016-01-16'); +-----------------------+ | dayname('2016-01-16') | +-----------------------+ | Saturday | +-----------------------+ 1 row in set (0.07 sec)

    6. time_to_sec(t),將時間 t 轉換為秒

    把時間轉化成秒數。

    7. sec_to_time(s),將秒數 s 轉換成時間

    把秒數轉化成時間(時分秒格式)。

    8. from_unixtime(unix_tiemstamp,format),把時間戳轉化成日期時間

    把 unix 時間戳轉換為可讀的時間

    mysql> select from_unixtime(23434343,'%Y %m %d %H %I %S'); +---------------------------------------------+ | from_unixtime(23434343,'%Y %m %d %H %I %S') | +---------------------------------------------+ | 1970 09 29 13 01 23 | +---------------------------------------------+ 1 row in set (0.00 sec)mysql> select from_unixtime('23434343','%Y %m %d %H %I %S'); +-----------------------------------------------+ | from_unixtime('23434343','%Y %m %d %H %I %S') | +-----------------------------------------------+ | 1970 09 29 13 01 23 | +-----------------------------------------------+ 1 row in set (0.00 sec)

    9. unix_timestamp(date),日期轉換成時間戳

    把可讀的時間轉換為 unix 時間戳。

    mysql> select unix_timestamp('2009-08-06 10:10:40'); +---------------------------------------+ | unix_timestamp('2009-08-06 10:10:40') | +---------------------------------------+ | 1249524640 | +---------------------------------------+ 1 row in set (0.00 sec)

    (四)條件判斷函數

    1. case 語句

    case 語句是數據庫中的分支語句 , 相當于 Java 中的 switch-case 語句。

    CASE expressionWHEN condition1 THEN result1WHEN condition2 THEN result2...WHEN conditionN THEN resultNELSE result END

    舉例:

    select ename , salary , job , case job when 'Analyst' then salary * 1.1 --注意這里沒有“ , ” when 'Programmer' then salary * 1.05 when 'clerk' then else salary -- else 相當于 Java 中 case 語句的 default end new_salary -- end 是 case 語句的結束標識,new_salary 是從 case 開始到 end 結束這部分 的別名 salary * 1.02 from emp_xxx ;

    2. ifnull(v1,v2),空值轉換函數

    如果 v1 的值不為 NULL,則返回 v1,否則返回 v2

    (五)其它函數

    1. coalesce(expr1, expr2, …, expr_n),返回參數列表中第一個非空參數

    參數列表中最后一個值通常為常量。

    舉例如下:

    select ename, bonus, salary, coalesce( bonus , salary*0.5 , 100 ) bonus_year from emp_htlwk; # bonus不為空則返回bonus的值,若為空,則判斷salary*0.5是否為空,不為空則返回salary*0.5的值,若為空則返回常數100

    需求描述:有分紅的以分紅金額作為年終獎,有工資沒有分紅的以月薪的50%作為年終獎,沒有分紅又沒有月薪的休假人員施舍100元作為年終獎。

    2. cast(x AS type),將 x 變成 type 類型

    將數值轉換成字符類型:

    mysql> select cast(120 as char); +-------------------+ | cast(120 as char) | +-------------------+ | 120 | +-------------------+ 1 row in set (0.03 sec)將字符串轉換成日期類型:mysql> select cast('2022-02-2' as date); +---------------------------+ | cast('2022-02-2' as date) | +---------------------------+ | 2022-02-02 | +---------------------------+ 1 row in set (0.03 sec)

    3. inet_aton(expr),將IP地址轉成32位的二進制整數

    mysql> select inet_aton('192.168.0.0'); +--------------------------+ | inet_aton('192.168.0.0') | +--------------------------+ | 3232235520 | +--------------------------+ 1 row in set (0.00 sec)

    4.inet_ntoa(expr),將二進制整數轉成IP地址

    mysql> select inet_ntoa('323223'); +---------------------+ | inet_ntoa('323223') | +---------------------+ | 0.4.238.151 | +---------------------+ 1 row in set (0.00 sec)mysql> select inet_ntoa(323223); -- 可以去掉引號 +-------------------+ | inet_ntoa(323223) | +-------------------+ | 0.4.238.151 | +-------------------+ 1 row in set (0.00 sec)

    二、組函數

    與單行函數不同 , 單行函數是每行數據返回一行結果 , 組函數是多行數據返回一行結果。

    (一)數學函數

    1. count (expression),返回查詢的記錄總數

    expression 參數是一個字段或者 * 號。常用于查詢表的記錄總數。

    2. avg(expression),返回一個表達式的平均值

    expression 是一個字段。

    返回 products 表中 price 字段的平均值:

    SELECT AVG(price) AS average_price FROM products;

    3. sum(expression),返回指定字段的總和

    expression 是一個字段。

    計算 order_details 表中字段 quantity 的總和:

    SELECT SUM(quantity) FROM order_details;

    4. max(expression),返回字段 expression 中的最大值

    對所有數據類型都可以操作。如果參數寫列名 , 默認忽略空值。

    5. min(expression),返回字段 expression 中的最小值

    對所有數據類型都可以操作。如果參數寫列名 , 默認忽略空值。

    總結

    以上是生活随笔為你收集整理的MySQL函数/数据库函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。