0%

MySQL查询

MySQL查询

在进行MySQL查询之前首先要先知道MySQL执行查询语句的执行顺序

  • 先执行from子句确定数据来源
  • 再执行where子句确定筛选条件
  • group by子句将数据进行分组
  • 使用聚集函数进行计算
  • 使用having子句筛选分组
  • 计算所有的表达式
  • select的字段
  • 使用order by进行排序

高级排序

在order by中也可以使用case表达式来根据条件逻辑动态的调整排序项

1
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值

1
2
3
4
-- 可以正常查到 name为 测试的记录
select name from app where name in ('测试',null)
-- 不会返回任何数据
select name from app where name not in ('测试',null)