单行函数
-- 字符函数
-- 拼接字符串
SELECT CONCAT(email,nick_name) from user;
-- 列转行
SELECT GROUP_CONCAT(email) from user;
-- 列转行
SELECT group_CONCAT(email) from `user`;
-- bcd 从第二个字符开始截取
SELECT SUBSTR('abcd',2);
-- bc 从第二个字符开始截取2位长度
SELECT SUBSTR('abcd',2,2);
-- 2 返回子串第一次出现的索引
SELECT INSTR('abcdcjjbd','bc');
-- bbdd 前后去掉 a
SELECT TRIM('a' FROM 'aaabbddaa');
-- **abc 字符串长度如果小于5,左边用*天才,如果长度大于5,从做截取5位。RPAD 右边
SELECT LPAD('abc',5,'*');
===================================================================
-- 数学函数
-- 四舍五入
SELECT ROUND(1.2);
SELECT ROUND(1.215,2);
-- 向上取整,返回大于等于的最小整数
SELECT CEIL(2.3);
-- 向下取整 返回小于等于的最大整数
SELECT FLOOR(2.4);
-- 1.2 截取
SELECT TRUNCATE(1.23,1);
-- 1 取余
SELECT MOD(5,2);
===================================================================
-- 日期函数
-- 2019-10-13 18:05:54
SELECT NOW();
-- 2019-10-13
SELECT CURDATE();
-- 18:07:13
SELECT CURTIME();
-- 年 月 日 时 分 秒
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
-- 将字符串日期转换成指定格式的日期
SELECT STR_TO_DATE('2019-10-13','%Y-%m-%d');
-- 19年-10月-13日 将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年-%m月-%d日');
======================================================================
-- 流程控制函数
-- 大
SELECT IF(10 > 4,'大','小');
-- CASE WHEN THEN
SELECT
email,CASE email
WHEN 'aa' THEN
'AA'
WHEN 'bb' THEN
'BB'
ELSE
'OTHER'
END '邮箱'
FROM
USER;
SELECT
email,
CASE
WHEN email = 'aa' THEN
'AA'
WHEN email = 'bb' THEN
'BB'
ELSE
'OTHER'
END '邮箱'
FROM
USER;
分组函数【聚合函数,统计函数,组函数】
-- 求和
SELECT SUM(salary) FROM employee;
-- 计数 统计非空值
SELECT COUNT(salary) FROM employee;
-- 平均值
SELECT AVG(salary) FROM employee;
-- 最大值
SELECT MAX(salary) FROM employee;
-- 最小值
SELECT MIN(salary) FROM employee;
其他函数
-- 两个时间段相差的天数
SELECT DATEDIFF(NOW(),'1970-01-01');