数据排序
排序采用order by 子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by 默认采用升序(asc 升序,desc 降序),如果存在where子句,那么order by 必须放到where语句的后面。
数据处理函数(单行处理函数)
Lower 转换小写
upper 转换大写
substr 取子串(substr(被截取的字符串,起始下标(起始下标从1开始),截取长度))
length 取长度
trim 去前后空格
str_to_date 将字符串转换成日期
%Y 代表四位的年份
%m 代表月
%d 代表日
%H 代表24小时制
%i 代表分钟
%S或%s 代表秒
date_format 格式化日期
format 设置千分位
round 四舍五入(0-1)
rand() 生成随机数
Ifnull 可以将null转换成一个具体值
多行处理函数----自动忽略空值
sum 求和
avg 取平均值
max 取最大值
min 取最小值
count 取得记录数
去除重复记录:distinct
作用:将查询结果中某一个字段的重复记录去除掉
用法:distict 字段名或distinct 字段名1 字段名2
distinct 字段名1 :去除与字段名1相同的记录
distinct 字段名1,字段名2:去除与字段名1,字段名2同时相同的记录
分组查询:group by
作用:通过哪个或者哪些字段进行分组
用法:group by 字段名
数据过滤条件:having
使用:having必须和group by一起使用,having是对分组之后的数据仍然不满意的情况下才使用。
select语句总结
一个完整的SQL语句如下:
select
xxx
from
xxx
where
xxx
group by
xxx
having
xxx
order by
xxxx
以上关键字的顺序不能变,严格遵守
以上语句的执行顺序:
- from 将硬盘上的表文件加载到内存
- where 将符合条件的数据进行摘取出来,生成一张新的临时表
- group by 根据列中的数据种类,将当前的临时表划分成若干个新的临时表
- having 可以过滤掉group by生成的不符合条件的临时表
- select 对当前的临时表进行整列读取
- order by 对select 生成的临时表进行重新排序,生成新的临时表
- limit 对最终生成的临时表的数据行进行截取