一.流程控制函数
流程控制函数可以根据不同的条件,执行不同的处理流程,可以在SQL语句中实现不同的条件选择,MySQL中的流程处理函数主要包括IF(), IFNULL()和CASE()函数
函数 | 功能 |
---|
IF(value,value1,value2) | 如果value的值为TRUE,返回value1,否则返回value2 |
IFNULL(value1,value2) | 如果value1的值不为NULL,返回value1,否则返回value2 |
SELECT last_name, salary, IF(salary>=6000, '高薪', '低薪')
FROM employees e
SELECT last_name, commission_pct, IF(commission_pct IS NOT NULL, commission_pct, 0) AS '奖金'
FROM employees e
#相同
SELECT last_name, commission_pct, IFNULL(commission_pct, 0) AS '奖金'
FROM employees e
函数 | 功能 |
---|
CASE WHEN 条件1 THEN 结果1…[ELSE resultn] END | 相当于编程语言的if…else if…else |
CASE expr WHEN 常量值1 THEN 值1…[ELSE 值n] END | 相当于编程语言的switch…case |
SELECT last_name, salary, CASE WHEN salary>=15000 THEN "白骨精"
WHEN salary>=10000 THEN "潜力股"
WHEN salary>=8000 THEN "小屌丝"
ELSE "草根" END AS "别名"
FROM employees e
SELECT last_name , department_id, salary, CASE department_id WHEN 10 THEN salary*1.1
WHEN 20 THEN salary*1.2
WHEN 30 THEN salary*1.3
ELSE salary*1.4 END AS "薪资"
FROM employees e
二.加密与解密函数
函数 | 功能 |
---|
MD5(str) | 返回字符串md5加密后的值, 若参数为NULL,则会返回NULL |
SHA(str) | 从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL,SHA加密算法比MD5更加安全 |
不可逆: 明文可以转为暗文, 不可以暗文转为明文
三.MySQL信息函数
mysql中内置了一些可以查询mysql信息的函数, 这些函数主要用于帮助数据库开发人员或运维人员更好地对数据库进行维护工作
函数 | 功能 |
---|
VERSION() | 返回当前mysql的版本号 |
CONNECTION_ID() | 返回当前mysql服务器的连接数 |
DATEBASE() , SCHEMA() | 返回mysql命令行当前所在的数据库 |
USER() | 返回当前连接mysql的用户名,格式为"主机名@用户名" |
CHARSET(value) | 返回字符串value自变量的字符集 |
COLLATION(value) | 返回字符串value的比较规则 |
SELECT VERSION(),CONNECTION_ID(),
USER(),CHARSET('ABC')
FROM DUAL
四.其他单行函数
函数 | 功能 |
---|
FORMAT(value,n) | n表示四舍五入后保留到小数点后n为 |
CONV(value,from,to) | 将value的值进行不同进制之间的转换 |
BENCHMARK(n,expr) | 将表达式expr执行n次,用于测试表达式的执行效率 |
CONVERT(value USING char_code) | 将value所使用的字符编码修改为char_code |