一. 单表查询语法
select 字段1,字段2,... from 表名 where 条件 group by field having 筛选 order by field lieit 限制条件.
关键字的执行优先级 :
1. from 找到某一个表
2. where 用where的约束条件,去文件/表中取出数据
3. 将取出的数据使用group by 进行分组,如果没有group by,整体作为一组
4. 将分组的结果使用having后的条件进行筛选
5. 执行select
6. 去重
7. 将结果按条件排序
8. 限制结果的显示数量.
二. where约束
1. 比较运算符 : >, <, >=, <=, <>, !=.
2. between 100 and 200 : 判断值在100和200之间的,包含100和200.
3. in (10,20,50) : 判断值是10或20或50的字段.
4. like "xxxx% / _" : 模糊查询,%表示可以表示多个字符,_表示单个字符.
5. 逻辑运算符 : 有多个条件时可以使用逻辑运算符 and or not.
三. group by 分组查询
※ . 分组是发生在where之后,即分组是基于where之后得到的记录而进行的.
※ . 如果没有mysql设置ONLY_FULL_GROUP_BY模式,在where之前用也会有查询结果,默认是组内的第一条记录,但是并没有意义.
※ . 如果想分组,则必须要设置全局的sql模式为ONLY_FULL_GROUP_BY.
通过分组后查询的的字段,只能查看组内的信息,需要借助聚合函数.才能查看其它字段的信息.
1. 聚合函数
①. max() 求最大值
②. min() 求最小值
③. avg() 求平均值
④. sum() 求和
⑤. count() 求总个数
四. having 过滤
having与where不一样的地方在于 :
执行优先级从高到低 : where > group by > having
where发生在分组group by之前,因而where中可以有任意字段,但绝对不能用聚合函数.
having发生在分组group by之后, 因而having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数.
五. order by 查询排序
排序要写在select语句末尾
select * from 表名 [ where 条件过滤 ] [ order by 字段 [ asc ] [ desc ] ]
asc : 升序 默认为升序
desc : 降序
六. limit 限制查询的数据数量
limit可以被用于强制限制select语句返回的记录数量.
limit接收一个或两个数字参数.如果给定两个参数,第一个参数是指定返回记录行的偏移量(即从第几个记录开始查询),第二个参数是返回记录行的最大数目.默认的初始位置是0.
limit n offset m 偏移量为m, 去n个值