本文更新于2020-09-05,使用MySQL 5.7,作業系統為Deepin 15.4,
目錄- 全域變數
- 數值函式
- 日期時間函式
- 字串函式
- 流程函式
- 聚合函式
- 其他函式
全域變數
| 變數 | 作用 |
|---|---|
| CURRENT_DATE | 當前日期 |
| CURRENT_TIME | 當前時間 |
| CURRENT_TIMESTAMP | 當前日期時間 |
數值函式
| 函式 | 作用 |
|---|---|
| ABS(x) | 絕對值 |
| CEIL(x) | 向上取整 |
| FLOOR(x) | 向下取整 |
| MOD(x, y) | 取余,等同x%y |
| RAND() | [0, 1)區間的亂數 |
| ROUND(x[, n]) | 四舍五入至n位小數,n默認為0 |
| TRUNCATE(x, n) | 截斷為n位小數 |
日期時間函式
| 函式 | 作用 |
|---|---|
| CURDATE() | 當前日期 |
| CURTIME() | 當前時間 |
| DATE_ADD(t, INTERVAL expr type) | 增加一定時間間隔 |
| DATEDIFF(later, previous) | later減previous相差的天數,不考慮時間 |
| DATE_FORMAT(t, fmt) | 使用fmt格式化 |
| FROM_UNIXTIME(unix) | UNIX時間戳的日期時間 |
| HOUR(t) | 小時 |
| MINUTE(t) | 分鐘 |
| MONTHNAME(t) | 月份名(英文) |
| NOW() | 當前日期時間 |
| UNIX_TIMESTAMP(t) | 轉換成UNIX時間戳 |
| WEEK(t) | 一年中的第幾周 |
| YEAR(t) | 年份 |
DATE_ADD(t, INTERVAL expr type)的type可用如下的時間間隔型別,expr使用對應的格式,格式允許不嚴格的間隔(即任何標點符都可),格式中的數值可使用負數,若整個格式就是一個數值,則可直接使用數值型別的格式,否則應使用字串型別的格式,
| 時間間隔型別 | 格式 |
|---|---|
| YEAR | YY |
| MONTH | MM |
| DAY | DD |
| HOUR | hh |
| MINUTE | mm |
| SECOND | ss |
| YEAR_MONTH | YY-MM |
| DAY_HOUR | DD hh |
| DAY_MINUTE | DD hh:mm |
| DAY_SECOND | DD hh:mm:ss |
| HOUR_MINUTE | hh:mm |
| HOUR_SECOND | hh:mm:ss |
| MINUTE_SECOND | mm:ss |
DATE_FORMAT(t, fmt)的fmt引數可使用的格式符如下:
| 格式符型別 | 格式符 | 說明 |
|---|---|---|
| 秒 | %S/%s | 兩位數字形式的秒(00, ..., 59) |
| 分 | %i | 兩位數字形式的分(00, ..., 59) |
| 時 | %H | 兩位數字形式的時,24小時制(00, ..., 23) |
| 時 | %h/%I | 兩位數字形式的時,12小時制(01, ..., 12) |
| 時 | %k | 數字形式的時,24小時制(0, ..., 23) |
| 時 | %l | 數字形式的時,12小時制(1, ..., 12) |
| 時分秒 | %T | 兩位數字,24小時制的時分秒(hh:mm:ss) |
| 時分秒 | %r | 兩位數字,12小時制的時分秒(hh:mm:ss AM/PM) |
| 上下午 | %p | AM或PM |
| 星期 | %W | 英文星期(Sunday) |
| 星期 | %a | 英文縮寫星期(Sun) |
| 星期 | %w | 數字形式的星期(0=Sunday) |
| 日 | %d | 兩位數字形式的日(01, ..., 31) |
| 日 | %e | 數字形式的日(1, ..., 31) |
| 日 | %D | 英文后綴形式的日(1st) |
| 月 | %M | 英文月(January) |
| 月 | %b | 英文縮寫月(Jan) |
| 月 | %m | 兩位數字形式的月(01, ..., 12) |
| 月 | %c | 數字形式的月(1, ..., 12) |
| 年 | %Y | 4位數字形式的年 |
| 年 | %y | 2位數字形式的年 |
| %j | 一年中第幾天,三位數字形式(001, ..., 366) | |
| %U | 一年中第幾周,Sunday為周中第一天,第一個Sunday為第一周的開始,兩位數字形式(00, ..., 52) | |
| %u | 一年中第幾周,Monday為周中第一天,01-01為第一周的開始,兩位數字形式(00, ..., 52) | |
| % | %% | 字符% |
字串函式
字串首字符的下標為1,
| 函式 | 作用 |
|---|---|
| CONCAT(v[, ...]) | 連接字串,v也可以是數值 |
| INSERT(str, idx, len, substr) | 將str從idx(含)起的len個字符替換為substr |
| LEFT(str, len) | 取左側len個字符 |
| LENGTH(str) | 字串長度 |
| LOWER(str) | 轉換成小寫 |
| LPAD(str, len, pad) | 使用pad在str左側填充至長度為len |
| LTRIM(str) | 去掉左側空格 |
| REPEAT(str, n) | 重復n次 |
| REPLACE(str, old, new) | 使用new替換old |
| RIGHT(str, len) | 取右側len個字符 |
| RPAD(str, len, pad) | 使用pad在str右側填充至長度為len |
| RTRIM(str) | 去除右側空格 |
| STRCMP(str1, str2) | str1<str2回傳-1,str1=str2回傳0,str1>str2回傳1 |
| SUBSTRING(str, idx, len) | 截取str從idx(含)起長度為len的子串 |
| TRIM(str) | 去掉兩側空格 |
| UPPER(str) | 轉換成大寫 |
流程函式
| 函式 | 作用 |
|---|---|
| IF(value, t, f) | 如果value為真則回傳t,否則回傳f |
| IFNULL(value, result) | 如果value不為NULL則回傳value,否則回傳result |
| CASE WHEN expr1 THEN result1 [WHEN ...] [ELSE default] END | 根據各運算式的真偽回傳結果 |
| CASE value WHEN enum1 THEN result1 [WHEN ...] [ELSE default] END | value根據各列舉值回傳結果 |
使用流程函式時注意NULL的情況,
聚合函式
| 函式 | 作用 |
|---|---|
| BIT_AND(row) | 按位與 |
| BIT_OR(row) | 按位或 |
其他函式
用于資料庫管理的函式:
| 函式 | 作用 |
|---|---|
| CURRENT_USER() | 當前用戶 |
| DATABASE() | 當前資料庫名,同SCHEMA |
| PASSWORD(str) | 加密成系統密碼,長度為41 |
| SCHEMA() | 當前資料庫名,同DATABASE |
| USER() | 當前登錄用戶名 |
| VERSION() | 當前MySQL版本 |
用于輔助查詢的函式:
| 函式 | 作用 |
|---|---|
| FOUND_ROWS() | 上一次查詢回傳的行數 |
| LAST_INSERT_ID() | 最后插入記錄使用的自增長值,如一次插入多條記錄,則回傳第一條記錄使用的自增長值 |
用于計算的函式:
| 函式 | 作用 |
|---|---|
| BIN(value) | 二進制形式表示 |
| CRC32(value) | CRC32值 |
| HEX(value) | 十六進制形式表示 |
| INET_ATON(ip) | IP從點分十進制轉換成網路位元組序整數 |
| INET_NTOA(uint) | IP從網路位元組序整數轉換成點分十進制 |
| MD5(value) | MD5值 |
| SHA1(value) | SHA1值 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/19729.html
標籤:MySQL
下一篇:MySQL的事務隔離級別
