首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 常用函數大全(二):條件判斷、系統信息、加密、類型轉換與網絡函數

     編輯:MySQL 綜合教學

一、條件判斷函數

函數語法說明示例
IFIF(expr, v1, v2)expr 為真返回 v1,否則 v2SELECT id, IF(score>=60,'pass','fail') FROM t;
IFNULLIFNULL(v1, v2)v1 非空返回 v1,否則 v2SELECT a, IFNULL(a,'no') FROM t;
CASE (搜索)CASE WHEN e1 THEN v1 [WHEN e2 THEN v2...] [ELSE vn] END多條件分支CASE WHEN grade>90 THEN 'A' WHEN grade>60 THEN 'B' ELSE 'C' END
CASE (簡單)CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2...] [ELSE rn] END等值匹配分支CASE grade WHEN 100 THEN '完美' WHEN 60 THEN '及格' ELSE '加油' END

二、系統信息函數

函數返回值
VERSION()資料庫版本號
CONNECTION_ID()當前連線 ID(等同 SELECT CONNECTION_ID())
DATABASE() / SCHEMA()當前預設資料庫名
USER() / SYSTEM_USER() / SESSION_USER()客戶端聲明的用戶@主機(如 root@localhost)
CURRENT_USER()實際認證通過的用戶@主機(權限判定依據)
CHARSET(str)字符串的字符集
COLLATION(str)字符串的校對規則
LAST_INSERT_ID()最近一次 AUTO_INCREMENT 生成的值(批量插入返回首個)

三、加密與雜湊函數

函數特點適用場景
PASSWORD(str)MySQL 內部單向雜湊,**5.7.6+ 棄用**,8.0 移除舊版本用戶密碼存儲(不建議新專案使用)
MD5(str)128 位雜湊,不可逆數據完整性校驗、非敏感標識生成
SHA1(str) / SHA2(str, 256/512)更強雜湊密碼鹽值雜湊(建議應用層用 bcrypt/Argon2)
AES_ENCRYPT(str, key) / AES_DECRYPT(crypt, key)對稱加密,需備份金鑰敏感字段加密存儲(身份證、銀行卡)
ENCODE(str, pwd) / DECODE(crypt, pwd)簡易對稱,**已棄用**不建議使用

四、格式化與進制轉換

  • FORMAT(x, n):數字保留 n 位小數,含千分位分隔符(如 FORMAT(12345.678, 2) → '12,345.68')。
  • BIN(x)、OCT(x)、HEX(x):二/八/十六進制字符串。
  • CONV(x, from_base, to_base):任意進制轉換(CONV(16,10,2) → '10000')。

五、IP 地址與數字互轉

SELECT INET_ATON('192.168.1.125');  -- → 3232235901
SELECT INET_NTOA(3232235901);       -- → '192.168.1.125'

適用於 IP 範圍查詢、地理位置關聯、日誌分析,存儲用 INT UNSIGNED 節省空間並支援索引範圍掃描。

六、鎖函數(應用級協作鎖)

函數返回值
GET_LOCK(name, timeout)1=獲取成功,0=超時,NULL=錯誤
RELEASE_LOCK(name)1=釋放成功,0=未持有,NULL=錯誤
IS_FREE_LOCK(name)1=空閒,0=被佔用
IS_USED_LOCK(name)持有者的 CONNECTION_ID,空閒返回 NULL

典型用例:分布式定時任務防重跑、單實例資源串行化。

七、效能測試與類型轉換

  • BENCHMARK(count, expr):重複執行 expr count 次,返回耗時(秒),用於測試表達式效能。
  • CAST(x AS type) / CONVERT(x, type):目標類型限 BINARY、CHAR、DATE、DATETIME、TIME、SIGNED、UNSIGNED。僅影響輸出類型,不改變表結構。
  • CONVERT(str USING charset):字符集轉換(CONVERT('abc' USING utf8mb4))。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved