什么是函数以及函数的作用:
函数简化操作难度,提高select的处理能力;函数并没有修改数据库中字段的值
函数的分类:
函数可以分为 单行函数和多行函数;多行函数就是对多行进行操作,产生一个结果的函数;单行函数就是队一行进行操作,产生一个结果
单行函数
1--字符串函数 对应java中String的方法
1.1--lower()函数 字符全部变小写
1.2--upper()函数 字符全部变大写
1.3--length()函数 给出字符的长度
1.4--replace()函数,替换,替换字段值
--数值函数
--日期时间函数
--流程函数
--json函数
--其他函数
多行函数
max() min() sum() avg(0 count()
多行函数会自动排除NULL值,不参与运算
max() min() count() 适用于所有的数据类型;sum() avg()仅限于数值类型(整数,浮点)
--group by 分组 having二次筛选,对group by的结果进行筛选(一次筛选where,在group by之前)
group by的where子句中不允许出现多行函数
where子句和having子句的异同
相同:都可以筛选记录
不同:where是group之前筛选;having 是group by之后筛选;where不可以出现多行函数,having可以出现多行函数
select语句的书写顺序和执行顺序
select--from--where--group by--having--order by
from--where--group--select--having--order by
有执行顺序中可以看出 where中只能出现数据库中定义的字段;
where having和on的区别
where 一次筛选
having 二次筛选,筛选条件是聚合函数和group by的分组字段
on是连接条件,外连接的时候,on只会过滤掉从表的数据,不会过滤掉主表的数据
group by的select子句中只能出现分组字段和多行函数