排序查询
select 查询列表
from 表
【where 筛选条件】
order by 排序列表 【asc(升序)|desc(降序)】
特点:
asc代表升序,desc代表降序,默认是升序
order by子句中可以支持单个字段、多个字段、表达式、函数、别名
order by子句一般放在循环的最后,limit子句除外
常见函数
概念:
将一组逻辑语句封装在方法体中,对外暴露方法名
优点:
隐藏了实现细节、提高代码的重用性
调用:
select 函数名(实参列表) 【from 表】
分类:
单行函数:如concat、length、ifnull等;
分组函数,主要做统计使用,又称为统计函数、聚合函数、组函数
单行函数
字符函数:
length:获取参数值的字节个数
concat:拼接字符串
upper、lower:大小写转换
substr\substring:截取字符(索引从1开始)
instr:返回子串第一次出现的索引,如果找不到返回0
trim:默认去除前后的空格
lpad:用指定的字符实现左填充指定长度,若本身字符串小于指定长度,则右截断
rpad:用指定的字符实现右填充指定长度
replace:替换
数学函数
round:四舍五入
ceil:向上取整,返回大于等于该参数的最小整数
floor:向下取整,返回小于等于该参数的最大整数
truncate:截断
mod:取余,符号与被除数相同
日期函数
now:返回当前系统日期加时间
curdate:返回当前系统日期,不包含时间
curtime:返回当前的时间,不包含日期
year:年
month:月
monthname:月的英文
day:日
hour:时间
minute:分钟
second:秒
str_to_date:将字符通过指定的格式转换为日期
date_format:将日期转换为字符
其他函数
version:查看版本号
database:查看当前的数据库
user:查看当前的用户
流程控制函数
if函数:
if else的效果
第一个参数表示条件,如果返回true则输出第二个参数,否则输出第三个参数
case函数:
switch case的效果
格式:
case 要判断的字段或表达式
when 常量1 then 要显示的值1【或语句1;】
when 常量2 then 要显示的值2【或语句2;】
…
else 要显示的值n【或语句n;】
end
多重if的效果
case
when 条件1 then 要显示的值1【或语句1;】
when 条件2 then 要显示的值2【或语句2;】
…
else 要显示的值n【或语句n;】
end
分组函数
功能:
用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum:求和
avg:求平均值
max:求最大值
min:求最小值
count:计算个数
sum、avg一般用于处理数值型
max、min、count可以处理任何类型
以上分组函数都忽略null值
可以和distinct使用
一般用count(*)统计行数
和分组函数一同查询的字段要求是group by后的字段
datediff:查询相差天数
分组查询
select 分组函数,列(要求出现在group by 后面)
from 表
【where 筛选条件】
group by 分组的列表
【order by 子句】
注意:
查询列表必须是分组函数和group by 后出现的字段
特点:
分组查询中的筛选条件分为两类
数据源 | 位置 | 关键字 | |
---|---|---|---|
分组前筛选 | 原始表 | group by子句前面 | where |
分组后筛选 | 分组后的结果集 | group by子句后面: | having |
分组函数做条件肯定是放在having子句中
group by 子句支持单个字段分组,多个字段分组,表达式,函数
也可以添加排序