B站搜索是怪物啊,分享技术视频,微信公众号搜索乌鸦的黑匣子,分享技术文档
1.聚合函数
1.平均值
select avg(col_name) from tb_name;
2.计数
select count(col_name) from tb_name;
3.最大值
select max(col_name) from tb_name;
4.最小值
select min(col_name) from tb_name;
5.合计
select sum(col_name) from tb_name;
2.Null值的函数
select sum(ifnull(col_name,value)) from tb_name;
3.处理重复值
1.会自动忽略Null值
select count(distinct col_name) from tb_name;
2.算入Null值
select count(distinct ifnull(col_name,"未知")) from tb_name;
4.创建数据组
1.group by 和 where 一起使用时放在 where 后面
select id,sum(price) from tb_name group by id;
2.多个分组
首先用department_id进行分组,之后用job_id进行分组,最后计算每个部门job_id的薪水总和
select department_id,job_id,sum(salary) from tb_name group by department_id,job_id;
5.having的用法
1.having的应用场景是对分组的数据进行筛选 where的应用场景是对行数据进行筛选
select class,sum(ifnull(price,0)) from list where id>=1 group by class having sum(ifnull(price,0))>100;
6.子查询
1.单行子查询 使用 = > >= < <= <> !=
2.多行子查询 使用 IN ANY ALL 可以配套上面使用 以及NOT
select l.name from list l where l.belong_class in(select name from class where id >=4);
7.聚合查询
select list.name,class.serial_number from list,class where class.name = list.belong_class;
8.字符连接函数
select concat(col_name1,"--",col_name2,"其他拼接的字符") from tb_name;
9.文本处理函数
length(col_name) # 返回字符串长度
lower(col_name) # 将字符串变成小写
ltrim(col_name) # 消除字符串左边空格
rtrim(col_name) # 消除字符串右边空格
upper(col_name) # 将字符串转成大写
10.日期格式化函数
# 大小写没有影响
select date_format(col_name,"%Y-%m-%d %H:%i:%s") from tb_name;
11.日期处理函数
1.返回当前日期
select now();
'''
datetime的格式是 YYYY-MM-DD HH-MM-SS
'''
2.返回日期的时间的日期/时间部分
select date(col_name) from tb_name; # 返回格式 YYYY-MM-DD
select time(col_name) from tb_name; # 返回格式 HH-MM-SS
3.返回一个日期的年份/月份/天数/小时/分钟/秒部分
select year(col_name) from tb_name; # 返回格式 YYYY
select month(col_name) from tb_name; # 返回格式 MM
select day(col_name) from tb_name; # 返回格式 DD
select hour(col_name) from tb_name; # 返回格式 HH
select minute(col_name) from tb_name; # 返回格式 MM
select second(col_name) from tb_name; # 返回格式 SS
12.数字处理函数
abs(col_name) # 返回绝对值
sin(col_name) # 返回正弦值
cos(col_name) # 返回余弦值
tan(col_name) # 返回正切值
sqrt(col_name) # 返回平方根