三、高级查询
1、聚合函数
函数名称 | 作用 | 函数名称 | 作用 |
---|---|---|---|
count() | 返回某列的行数 | max() | 返回某列的最大值 |
sum() | 返回某列的和 | min() | 返回某列的最小值 |
avg() | 返回某列的平均值 |
1.1 count() 函数
语法格式:select count(*) from 表名;
1.2 sum() 函数
语法格式:select sum(字段名) from 表名;
1.3 avg() 函数
语法格式:select avg(字段名) from 表名;
1.4 max()函数和min() 函数
语法格式:select max或min(字段名) from 表名;
2、对查询结果排序
语法格式如下:
select * | 字段名1,字段名2···
from 表名
order by 字段名1 [ ASC | DESC],字段名2[ ASC | DESC] ··· ;
3、分组查询
3.1 单独使用 group by 分组
单独使用 group by 关键字,查询的是每个分组中的一条记录。
3.2 group by 和聚合函数一起使用
group by 和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等。
3.3 group by 和 having 关键字一起使用
having 关键字和 where 关键字的作用相同,都用于设置条件表达式对查询结果进行过滤,区别在于,having 关键字后可以跟聚合函数,而 where 关键字不能。
4、使用 limit 限制查询结果的数量
语法格式如下:
select * | 字段名1,字段名2···
from 表名
limit [offset,] 记录数;
offset 为可选参数,如果不指定其默认值为0,“记录数”表示返回查询记录的条数。
5、函数(列表)
数字函数
函数名称 | 作用 |
---|---|
abs(x) | 返回 x 的绝对值 |
sqrt(x) | 返回 x 的非负2次方根 |
mod(x,y) | 返回x被y除后的余数 |
ceiling(x) | 返回不小于x 的最小整数 |
floor(x) | 返回不大于x 的最大整数 |
round(x,y) | 对x进行四舍五入操作,小数点后保留y位 |
truncate(x,y) | 舍去x中小数点y位后面的数 |
sign(x) | 返回x的符号,-1,0或者1 |
字符串函数
函数名称 | 作用 |
---|---|
length(str) | 返回字符串str的长度 |
concat(s1,s2,···) | 返回一个或多个字符串连接产生的新的字符串 |
trim(str) | 删除字符串两侧的空格 |
replace(str,s1,s2 | 使用字符串s2替换字符串str中所有的字符串s1 |
substring(str,n,len) | 返回字符串str 的子串,起始位置为n,长度为len |
reverse(str) | 返回字符串反转后的结果 |
locate(s1,str) | 返回子串s1在字符串str中的起始位置 |
日期和时间函数
函数名称 | 作用 | 函数名称 | 作用 |
---|---|---|---|
curdate( ) | 获取系统当前日期 | adddate( ) | 执行日期的加运算 |
curtime( ) | 获取系统当前时间 | sbudate( ) | 执行日期的减运算 |
sysdate( ) | 获取系统当前日期和时间 | date_format( ) | 格式化输出日期和时间值 |
time_to_sec( ) | 返回将时间转换成秒的结果 |
条件判断函数
函数名称 | 作用 |
---|---|
if(expr,v1,v2 ) | 如果 expr 表达式为 true 返回 v1,否则返回 v2 |
ifnull(v1,v2) | 如果 v1 不为 null 返回 v1, 否则返回 v2 |
case expr when v1 then r1 [when v2 then r2···] [else r n] end | 如果 expr 值等于v1,v2等,则返回对应位置then后面的结果,否则返回 else 后的结果 r n |
加密函数
函数名称 | 作用 |
---|---|
MD5(str) | 对字符串 str 进行MD5 加密 |
ENCODE(str,pwd_str) | 使用 pwd 作为密码加密字符串 str |
DECODE(str,pwd_str) | 使用 pwd 作为密码解密字符串 str |
6、为表和字段取别名
6.1 为表取别名
语法格式:select * from 表名 [as] 别名;
6.2 为字段取别名
语法格式:select 字段名 [as] 别名 [,字段名 [as] 别名,···] from 表名;