Data Query Language,数据查询语言,常用于 select
4.常见函数
语法:select 函数名(实参列表) [from 表名]
特点:
- 单行函数
- 分组函数(或者统计函数)
# 字符函数
# length:获取参数值的字节个数
select length('hello');-- 5
# concat:拼接字符
select concat('hel','lo'); -- hello
# upper/lower:转换为大/小写
select upper('hello'); -- HELLO
select lower('Hello'); -- hello
# substr/substring 截取字符串,索引从1开始
select substr(‘hellojavap’,6); -- javap 从索引6开始进行截取使用字符
select substr(‘hellojava’,6,4); -- java 从索引6开始,长度为4进行截取
# instr:返回子串第一次出现的索引,找不到返回0
# trim:去前后字符
select trim(' xxx '); -- 去前后空格
select trim('a' from 'aaaayyyyaaaa'); -- 去前后a
# lpad/rpad:左/右填充
select lpad('abc',5,'d'); -- ddabc 用d填充长度到5
# replace:替换
select replace('abcdd','dd','ee'); -- abcee 把dd换成ee
# 数学函数
# round:四舍五入
select round(4.68); -- 5 不保留小数
select round(4.68,1); -- 4.7 小数点后保留一位
# ceil:向上取整 大于等于最小整数
select ceil(1.0); -- 1
# floor:向下取整 小于等于最大整数
select floor(1.0); -- 1
# truncate:截断
select truncate(1.22,1); -- 1.2
# mod:取余
select mod(10,3); -- 1
# 日期函数
# now:当前系统日期+时间
select now(); -- 2010-10-10 10:10:10
# curdate:当前系统日期,没有时间
select curdate(); -- 2010-10-10
# curtime:当前系统时间,没有日期
select curtime(); -- 10:10:10
# year/month/day/hour/minute/second:指定部分
select year(now()); -- 2010
# str_to_date:字符串转换成日期
select str_to_date('2010-10-10','%Y-%M-%d'); -- 用%Y-%M-%d格式去解析前面的字符串,不是最终返回格式
# date_format:将日期转换成指定格式的字符
select date_format(now(),'%Y年%m月%d日'); -- 将日期转换成格式%Y年%M月%d日输出
# datediff:两个时间相差天数
select datediff('2010-10-10','2010-10-1'); -- 9
# 流程控制函数
# if:if...else效果
select if(10>5,'1','-1');
# case:switch...case效果
select case 表达式 when 表达式 then 值 else 值 end
select case when 表达式 then 值 else 值 end
5.分组函数
分类:sum求和,avg平均值,max最大值,min最小值,count计算个数
特点:
- sum,avg一般处理数值,maximin,count可以处理任何类型
- 以上分组函数都忽略null值
- 可以和distinct搭配实现去重的运算
- 一般使用count(*)用作统计行数
- 和分组函数一同查询的字段要求是 group by 后的字段
# 统计有几种工资
select count(distinct salary) from employees;
# count几种用法,innodb下count(*)和count(1)效率最好,myisam下count(*)最好
count('字段'):统计不为null的值
count(*):统计总记录数
count(1):加一列1,再统计总记录数
6.分组查询
语法:select 列,分组函数 from 表名 [where 筛选条件] group by 分组列表 [order by 排序列表];
特点:
- 查询列表中的列必须是group by后面的列
- 分组查询中的筛选条件分类
- 分组前筛选
- 数据源:原始表
- 位置:group by 前面
- 关键词:where
- 分组后筛选
- 数据源:分组后的结果集
- 位置:group by 后面
- 关键词:having
- 分组函做条件肯定放在having子句中
- 能用分组前筛选,尽量用分组前筛选
如果您对我的专题内容感兴趣,也可以关注我的博客:https://yxw920922.cn