select(第五步)
...
from(第一步)
...
where(第二步)
...
group by (第三步)
...
having(第四步)
...
order by(第六步,排序永远最后)
....
目录
3.排序查询
3.1 order by [字段];
默认升序排序,指定降序desc,指定升序asc
3.2 两个字段排序order by [第一个字段],[第二个字段];
第一个字段是先行条件
3.3 根据字段的位置排序 order by 2;
表示第二列,不建议使用,不健壮
3.4关键字顺序不能变
select(第三步)
...
from(第一步)
...
where(第二步)
...
order by(第四步,排序永远最后)
....
4.数据处理函数
4.1数据处理函数被称为单行处理函数
特点:一个输入对应一个输出,一行
多行处理函数:多个输入对应一个输出,一列
4.2常见的单行处理函数
lower(列名) 转换小写
upper(列名) 转换大写
substr取子串(substr(被截取的字符串,起始下标,截取长度), 起始下标从1开始没有0 )
length(列名) 取长度 ,每一行该列的数据长度
trim(列名,字符串) 去空格
str_to_date() 将字符串转换为日期
date_format() 格式化日期
format() 设置千分位
round(数值,保留的位数) 四舍五入,-1保留到十位
rand() 生成随机数
ifnull(列名,设置的数) 可以将一列中的null转为具体值
null参加的运算自动转为null
* select后面可以跟字段名(变量名),字面值(数据)
case(列名)when('条件')then(怎么做)when...then...else...end
5.分组函数(多行处理函数)
5.1 多行处理函数:多个输入对应一个输出,一列
5.2 五个函数
count(*) 统计总行数,统计不为null的元素的数量 计数
sum()求和
avg()平均值
max() 最大值
min()最小值
*分组函数在使用的时候必须先进行分组,然后才能用,如果没有对数据进行分组,整张表默认为一组
分组函数在使用时自动忽略null
分组函数不能够直接使用在where语句中
*6.分组查询
6.1先进行分组再对每一组的数据进行操作
6.2select后面只能跟分组函数
6.3使用having可以对分组后的数据进行过滤,不能单独使用,不能代替where
6.4where和having优先选择where,效率高