1.字符函数
2.数学函数
3.日期函数
4.流程控制函数
5.分组函数
字符函数
1.一个汉字占三个字节,占一个字符
SELECT LENGTH('hellow,河南');
输出结果为:13
SELECT CHAR_LENGTH('hellow,河南');
输出结果为:9
2.字符截取函数
SELECT SUBSTRING('中华人民共和国',2,2);
这里的字符串定位是从1开始的,不是从0开始的。
第一个2表示从"华"字开始截,第二个2表示截取两个字符。如果不写第二个数字2,那么就截取到字符串末尾
代码运行结果为:华人
3.获取字符串第一次出现的位置
SELECT INSTR("校服上除了校徽别别别的",'别');
返回值为8
4.去除文字前后(不是字符串中间)指定字符,默认是空格
SELECT TRIM(" 中 过 啊 ");
去除首尾空格
SELECT TRIM("x" FROM "xxxxxxxxxx中 国 梦 xxxx");
去除首尾“x”
5.左填充,右填充
SELECT LPAD('木婉清',10,'a');
设置位置总长度为10,木婉清占三个,然后在左侧填充7个a
SELECT RPAD('木婉清',10,'a');
设置位置总长度为10,木婉清占三个,然后在右侧填充7个a
6.比较两个字符大小
SELECT STRCMP('abc','abc');
比较的是ascII表
前面大返回1,后面大返回-1,一样大返回0
7.左截取,右截取
SELECT LEFT('鸠摩智',2);
截取的是鸠摩
SELECT RIGHT('鸠摩智',2);
截取的是摩智
8.变大小写
select UPPER("sdf")
select lower("asd");
数学函数
1.求绝对值
SELECT ABS(-100);
输出100
2.向上取整,向下取整
SELECT CEIL(1.09);
返回值为2
SELECT FLOOR(1.23);
返回值为1
3.四舍五入,截断
SELECT ROUND(1.51);
返回值为2
SELECT ROUND(1.50345,4)
4表示的是保留四位小数,返回值是1.5035
截断的意思是直接截取不四舍五入
SELECT TRUNCATE(1.50345,4);
返回值为1.5034
4.取余
SELECT MOD(10,3);
返回值为1
日期函数
1.获取日期加时间
SELECT NOW();
2.获取日期
SELECT CURDATE();
3.获取时间
SELECT CURTIME();
4.获取两个日期之差
SELECT DATEDIFF("2000-4-17","2020-3-30")
获取活了多少天,前面的减后面的,所以返回值为负数
5.日期转化函数
SELECT DATE_FORMAT('2000-4-17 4:23:59','%Y年%m月%d日 %h小时%i分%s秒');
输出结果为:2000年04月17日 04小时23分59秒
SELECT STR_TO_DATE("2000年04月17日 04小时23分59秒",'%Y年%m月%i日 %h小时%i分%s秒');
输出结果为:2000-4-17 4:23:59
这两个函数是互逆的。
流程控制函数
1.if函数
SELECT IF(100>99,"对","错");
类似于三目运算符,输出:对
2.case函数
用法一
SELECT CASE 100%3
WHEN 1 THEN 'np'
WHEN 2 THEN 'bp'
WHEN 3 THEN 'qp'
else 'qp'
END;
输出结果为np
类似于swich函数。可以无限延长
SELECT `department_id` AS 部门, salary AS 旧工资,
CASE `department_id`
WHEN 30 THEN `salary`*2
WHEN 50 THEN salary*3
WHEN 60 THEN salary*4
ELSE `salary`
END AS 新工资
FROM employees
ORDER BY 新工资;
------------------------------------------------------------------------------
用法二
SELECT CASE
WHEN 条件一 THEN 结果一
WHEN 条件二 THEN 结果二
WHEN 条件三 THEN 结果三
ELSE 结果四
END
类似于多重if语句
SELECT salary,
CASE
WHEN `salary` > 20000 THEN "a"
WHEN `salary` > 15000 THEN "b"
WHEN `salary` > 10000 THEN "c"
ELSE "d"
END AS 等级
FROM employees;
分组函数
用于统计计算
这个比较简单,没什么特殊语法。
分组函数的作用就是:将一组(列)数据进行统计计算,最终得到一个值。
SUM() 求和
AVG() 平均数
MAX() 最大值
MIN() 最小值
COUNT() 计算非空字段的个数
select sum(salary) as 薪水合
from employees;
COUNT()介绍:
COUNT(*) 统计这个表内有几行数据
count(1) 功能与上面的那个一样,不建议使用,理解一下就好
搭配DISTINCT实现去重
count(DISTINCT department_id)