当前位置: 首页 > news >正文

MySQL 单行函数笔记(流程控制、加密解密与信息函数)

MySQL 单行函数笔记(流程控制、加密解密与信息函数)

MySQL 流程控制、加密解密与信息函数 速查笔记


一、流程控制函数

流程控制函数可以根据不同条件执行不同逻辑,实现SQL中的分支判断。

1. IF() 函数

  • 语法IF(条件, 结果1, 结果2)
  • 说明:条件为真返回结果1,为假返回结果2
  • 示例
    -- 根据工资高低判断薪资等级
    SELECT last_name, salary, IF(salary >= 6000, '高工资', '低工资') AS salary_level
    FROM employees;-- 计算含提成的年薪(无提成时按0计算)
    SELECT last_name, commission_pct, IF(commission_pct IS NOT NULL, commission_pct, 0) AS comm,salary * 12 * (1 + IF(commission_pct IS NOT NULL, commission_pct, 0)) AS annual_sal
    FROM employees;
    

2. IFNULL() 函数

  • 语法IFNULL(值1, 默认值)
  • 说明值1不为NULL则返回它,否则返回默认值。可看作IF(值1 IS NOT NULL, 值1, 默认值)的简化版。
  • 示例
    -- 无提成的员工显示为0
    SELECT last_name, commission_pct, IFNULL(commission_pct, 0) AS comm
    FROM employees;
    

3. CASE WHEN 分支判断

有两种常用写法:

写法1:条件判断(类似if-else if-else

  • 语法
    CASE WHEN 条件1 THEN 结果1WHEN 条件2 THEN 结果2...ELSE 默认结果
    END
    
  • 示例:按工资划分等级
    SELECT last_name, salary,CASE WHEN salary >= 15000 THEN '白骨精'WHEN salary >= 10000 THEN '潜力股'WHEN salary >= 8000 THEN '小屌丝'ELSE '普通员工'END AS salary_level
    FROM employees;
    

写法2:等值判断(类似switch-case

  • 语法
    CASE 字段WHEN 常量1 THEN 结果1WHEN 常量2 THEN 结果2...ELSE 默认结果
    END
    
  • 示例:按部门计算薪资系数
    SELECT employee_id, last_name, department_id, salary,CASE department_idWHEN 10 THEN salary * 1.1WHEN 20 THEN salary * 1.2WHEN 30 THEN salary * 1.3ELSE salary * 1.4END AS adjusted_salary
    FROM employees
    WHERE department_id IN (10, 20, 30);
    

二、加密与解密函数

用于数据加密保护,部分函数在高版本MySQL中已废弃。

函数 说明 注意事项
PASSWORD(str) 返回字符串的加密版本(41位不可逆) MySQL 8.0中已废弃
MD5(str) 返回字符串的MD5加密值(不可逆) NULL参数返回NULL
SHA(str) 返回字符串的SHA加密值(比MD5更安全) NULL参数返回NULL
ENCODE(value, seed) / DECODE(value, seed) 用seed加密/解密value MySQL 8.0中已废弃

示例:

-- MD5和SHA加密
SELECT MD5('mysql'), SHA('mysql'), MD5(MD5('mysql'))
FROM DUAL;

三、MySQL信息函数

用于查询数据库和服务器的元信息。

函数 说明
VERSION() 返回当前MySQL版本号
CONNECTION_ID() 返回当前服务器连接数
DATABASE() / SCHEMA() 返回当前数据库名
USER() / CURRENT_USER() 返回当前连接用户名(格式:主机名@用户名
CHARSET(str) 返回字符串的字符集
COLLATION(str) 返回字符串的比较规则

示例:

SELECT VERSION(), CONNECTION_ID(), DATABASE(), SCHEMA(),USER(), CURRENT_USER(), CHARSET('尚硅谷'), COLLATION('尚硅谷')
FROM DUAL;

四、综合练习示例

题目:按部门计算薪资倍数

部门10:工资×1.1;部门20:工资×1.2;部门30:工资×1.3;其他部门:工资×1.4

SELECT employee_id, last_name, department_id, salary,CASE department_idWHEN 10 THEN salary * 1.1WHEN 20 THEN salary * 1.2WHEN 30 THEN salary * 1.3ELSE salary * 1.4END AS adjusted_salary
FROM employees;

五、使用注意事项

  1. CASE WHEN 的执行顺序:条件判断按从上到下的顺序执行,匹配到第一个条件后停止。
  2. 加密函数的废弃说明PASSWORD()ENCODE()/DECODE()在MySQL 8.0中已移除,建议使用MD5()SHA()替代。
  3. IFNULL()COALESCE()IFNULL()仅处理单个值,多值判断可使用COALESCE(值1, 值2, ...)返回第一个非NULL值。
http://www.jsqmd.com/news/847736/

相关文章:

  • 从零构建嵌入式Linux平板:基于全志H3与Qt5的实战指南
  • SAP PP实战解析:MPS(主生产计划)如何成为供需平衡的“定海神针”?
  • “Palanti本体论”:数据安全时代的一种应用范式
  • 前端开发从入门到精通:Vue3+TypeScript实战教程
  • 一场跨境直播的背后,到底藏着多少技术准备?
  • 提高题5-高频日期函数
  • 【无人机协同】联合优化无人机轨迹、发射功率与地面用户-MEC关联的多无人机多地面用户系统 附matlab代码✅
  • 2026 年环保设备工程厂家深度测评排行榜 TOP5 - 小艾信息发布
  • STM32串口转RS-485双机通信:硬件设计、软件驱动与调试全解析
  • NPM全局安装OpenAI Codex CLI的3步权限配置与环境适配指南
  • Perplexity AI招聘全流程拆解:从简历筛选到终面Offer,7个被90%候选人忽略的关键节点
  • Harness层服务熔断:防止级联故障
  • 转行对谈:转向AI是破茧成蝶还是折翼未来?
  • 创业公司如何设计有效的OKR
  • 使用 NextTrace 工具如何精准测试三网直连路由路径
  • Perplexity体验真相曝光:92%用户忽略的3个隐藏缺陷及2024最新优化方案
  • 构建TileLink验证IP:从协议检查到一致性验证的完整指南
  • 2026年轻人相亲平台分析报告:主流服务模式与用户适配指南 - 温茶叙旧
  • 抖音无水印视频下载器的技术架构解析与实现原理
  • 9.2、数据链路层—差错编码
  • Codex CLI 双模运行机制解析:云端沙盒与本地执行的 4 种协同场景
  • 从A/B测试到临床实验:避开P值陷阱的5个实战要点(含单尾/双尾选择指南)
  • 【Perplexity开发者必藏资源】:17个被官方文档隐藏的调试技巧+3个内部状态检测命令
  • [实测可用 v2.7.5] 桌面端 Open Claw 搭建流程全程图文教程
  • 【Perplexity编程搜索权威白皮书】:基于1786次真实编码场景测试,验证TOP3提示词组合准确率提升317%
  • 【RT-DETR实战】050、Transformer结构效率改进方向总览
  • NFC读卡能力 支持安卓/iOS/鸿蒙 UTS插件
  • 9.1、数据链路层—概述
  • 数据结构:2.时间复杂的和空间复杂度
  • Codex CLI 安全配置实战:API Key 管理、额度限流与 OAuth2 鉴权的 4 步落地