开始打鸡血了
- 语法顺序
select distinct 字段1,字段1,字段3
from 库.左表
连接类型 join 库.右表
on 条件
where 条件
group by 分组条件
having 过滤
order by 排序字段1,排序字段2
limit n;
- 执行顺序
1. from 先找左表
2. join 左右表根据连接类型形成笛卡尔新数据
3. on 筛选过滤
4. where 过滤数据
5. group by 分组() [没有group by 整体算作一组]
6. having 分组过滤
7. select 执行select
8. distinct去重形成新数据
9 order by 数据排序
10.limit 限制查询数据条数
- group by 使用的聚合函数
max() 最大
min() 最小
count() 统计
avg() 平均
sum() 求和
group_concat() 分组后查看组内所有成员
select 分组字段,group_concat(表字段) from 表 group by 分组字段
- 设置group by 的 global sql_mode为严格分组模式
set global sql_mode="ONLY_FULL_GROUP_BY";
设置后 select 的字段只能取分组字段
select 分组字段 from table group by 分组字段
- order by排序
order by默认为升序(asc)排序
降序排序(desc)
order by 字段1,字段2
先按照字段1排序,字段1相同按照字段2排序
- limit 限制查询条数和分页
【查询 n 条 limit n】
用法示例:查询工资最高的员工信息
select * from employ order by salary desc limit 1
【分页 limit n,m】
n--页码 m--每页条数
符合分页的sql 格式为:
select * from table limit (n-1)*m,m
如每页十条数据
第一页 select * from table limit 0,10
第二页 select * from table limit 10,10
...
...
...