一、常见函数
-
单行函数
字符函数,数学函数,日期函数,控制函数
CONCAT, LENGTH, IFNULL -
分组函数
SUM, AVG, MAX, MIN, COUNT
COUNT(*) 统计行数
单行函数
字符函数
LENGTH
获取字符串的字节长度CONCAT
拼接字符串UPPER, LOWER
SUBSTR(字符串, 开始,长度)
索引从1开始INSTR
返回子串第一次出现的索引,找不到返回0TRIM(字符串1 from 字符串2)
删除字符串2左右两边的字符串1LPAD
用指定的字符串实现左填充指定字符RPAD
REPLACE(字符串, 字符串1,字符串2)
替换
数字函数
ROUND
四舍五入CEIL
向上取整FLOOR
向下取整TRUNCATE
截断MOD
取余
日期函数
-
NOW()
返回当前系统日期+时间 -
CURDATE()
返回当前系统日期,不包含时间 -
CURTIME()
返回当前时间,不包含日期 -
可以获取当前的年、月、日、小时、分钟、秒
MONTH(NOW())
-
STR_TO_DATE(’9-13-2019‘,’%m-%d-%y‘)
将日期格式的字符按转换为指定格式的日期 -
DATE_FORMAT(’2018/06/07‘,’%Y年%m月%d日‘)
:将日期转换为字符
流程控制函数
- if语句:
IF(条件判断,为真则,为假则)
- case语句:
类似于switch
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
类似于多重if
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end
分组函数
SUM, AVG, MAX, MIN, COUNT
特点:
SUM, AVG
只能处理数值型;MAX, MIN,COUNT
可以处理任何类型- 以上分组函数都可以忽略NULL值
- 可以和
DISTINCT
搭配实现去重 COUNT(*)
统计行数,COUNT(1)
也可以统计行数
MYISAM 存储引擎下,COUNT(*)
效率高
INNODB 存储引擎下,COUNT(*)
和COUNT(1)
效率差不多,比COUNT(字段)
效率高
二、分组查询
语法: SELECT 字段名 FROM 表名 【WHERE 筛选条件】GROUP BY 分组列表 【HAVING 筛选条件】ORDER BY 子句
注意: 查询列表必须特殊,要求是分组函数和 GROUP BY
后出现的字段; GROUP BY
支持单个字段或多个字段
-
分组前筛选
WHERE
-
分组后筛选
HAVING