1.统计函数
1.count()
- count(*)会返回满足条件的记录的行数,包含NULL
- count(col)会排除列中为NULL的行
SELECT COUNT(*) | COUNT(col | expression)
FROM tb_name
[WHERE where_definition];
2.avg()
SELECT AVG(col1 | expression) {, AVG(col2 | expression) ... }
FROM tb_name
[WHERE where_definition];
3.sum()
- 如果对字符串求和无意义
SELECT SUM(col1 | expression) [AS alias] {, SUM(col2 | expression) ...}
FROM tb_name
[WHERE where_definition];
4.max() \ min()
SELECT MAX/MIN(col1 | expression) {, MAX/MIN(col2 | expression) ... }
FROM tb_name
[WHERE where_definition];
2.分组统计
group by和having指令
- group by指令会使图表按照group by后的的列进行分组
- HAVING指令则是在分组后进行筛选
SELECT col1, col2, ...
FROM tb
GROUP BY col1 [HAVING expression];
分组前
分组后
3.字符串函数
注:可以使用系统的亚元表DUAL进行测试,例如select instr('aaabbbccc', 'ab') from DUAL;
1.charset(str)
- 返回str串所用的字符集
2.concat (string1 [, string2...])
- 拼接字符串
3.instr(string, substring)
- 返回substring在string的出现位置,没有返回0
4.ucase(string) / lcase(string)
- 所有字母转成大 / 小写
5.left(string, length) / right(string, length)
- 从string的左 / 右边起取出length个字符
6.length(string)
- 以字节为单位,返回string字符串的长度
7.replace(str, search_str, replace_str)
- 将str中的search_str替换成replace_str
8.strcmp(string1, string2)
- 比较string1,string2的大小,有点类似于C语言里的strcmp()函数
- 注意使用的字符规则是否具有不区分大小写等特性
9.substring(str,position [, length])
- 从str字符串的position位置开始,取出length长度的字符
- 省略length将会从position开始一直取出到str字符串的末尾
- position以1作为起始计算位置
10.ltrim(string) / rtrim(string) / trim(string)
- 去除左边 / 右边 / 两边的空格
4.数学函数
least(num1, num2, num3, ...) | 求最小值 | |
abs(num) | 求绝对值 | |
bin(decimal_num) | 十进制转二进制函数 | |
conv(num, from, to) | from为原进制,to为转换后进制 | 进制转换 |
floor(num) | 向下取整 | |
format(num, places) | 保留小数位数 | |
hex(decimal_num) | 十进制转十六进制 | |
mod(num,deno) | 返回值为num%deno | 取余数 |
rand([seed]) | 输入种子时可保持输出随机数不变 | 输出0~1的随机数 |
ceiling(num) | 向上取整 |
5.日期函数
current_date() | 当前日期(年月日) |
current_time() | 当前时间(时分秒) |
current_timestamp() | 当前时间戳(年月日时分秒) |
now() | 当前年月日时分秒 |
date(datetime) | 返回datetime的年月日 |
date_add(date, INTERVAL value type) | 加上value一段时间,需要判断type类型 |
date_sub(date, INTERVAL value type) | 减少value一段时间 |
datediff(date1,date2) | 两个日期差(结果以天数返回,可以为负) |
timediff(date1, date2) | 两个时间差(结果以时分秒返回) |
from_unixtime(seconds, format) | 可以将seconds的秒数转换成指定形式,从1970-1-1开始 |
unix_timestamp() | 返回1970-1-1到现在的秒数 |
year | month | date (datetime) | 取出年 | 月 | 日 |
date_add()函数使用案例:
from_unixtime()函数使用案例:
6.流程控制函数
if(expression1,expression2,expression3) | expression1为真返回expression2,否则返回expression3 |
ifnull(expression1. expression2) | expression1不为空返回expression1,否则返回expression2 |
select case when expression1 then expression2 when expression3 then expression4 else expression5 end | 多分支 |
示例演示:
7.加密函数
user() | 用户查询(用户@IP地址) |
database() | 查询当前数据库名称 |
md5(str) | 为str字符串计算一个经md5加密的32位字符串 |
password(str) | 为str字符串计算一个加密字符串 |