MySQL查询
在进行MySQL查询之前首先要先知道MySQL执行查询语句的执行顺序
-
先执行from子句确定数据来源 -
再执行where子句确定筛选条件 -
group by子句将数据进行分组 -
使用聚集函数进行计算(sum、max、min、count等) -
使用having子句筛选分组 -
计算所有的表达式 -
select的字段 -
使用order by进行排序
高级排序
在order by中也可以使用case表达式来根据条件逻辑动态的调整排序项
select * from emp order by case when job = 'SALES' then comm else sal end
特殊的null操作
在sql中对于null值一定要小心处理,true or null的运算结果是true,而false or null的运算结果是null,一旦混入了null,结果就会是null,所以在使用in或者or来进行逻辑运算时,一定要考虑是否会涉及null值
-- 可以正常查到 name为 测试的记录
select name from app where name in ('测试',null)
-- 不会返回任何数据
select name from app where name not in ('测试',null)