拼写顺序 | sql | 解读 | 执行顺序 | 执行顺序-解读 |
1 | select | 确定目标 | 7 | 预取值A-1 |
2 | distinct | 去重 | 8 | 去重A-2 |
3 | from | 来自哪 | 1 | 圈定大的范围 |
4 | join(如left join) | 表连接 | 3 | |
5 | on | 表连接(关键词) | 2 | |
6 | where | 过滤 | 4 | 进一步明确范围 |
7 | group by | 分组 | 5 | 针对明确的范围进行处理1 |
8 | having | 分组-过滤 | 6 | |
9 | order by | 排序 | 9 | 排序A-3 |
10 | limit | 确定最终取的记录数量 | 10 | 取值A-4 |
from 子句:左右2个表做笛卡尔积
on条件:筛选满足条件的数据
join条件:如果是INNER JOIN那就正常,如果是outer join 则会添加回来上面一步过滤的一些行
where条件:对不满足条件的行一处,并不能恢复
group by 分组:分组后只能得到每列的一行或者聚合函数值
with cube/rollup:形成超组
having筛选:对分组进行筛选
select查询:筛选出需要的列
distinct去重:去除重复的行
order by排序
limit 限定:制定需要返回多少行
(1)关于别名的使用
在mysql中,做了优化:
group by中可以使用别名;where中不能使用别名;order by中可以使用别名