MySQL注意事项

2020-05-05  本文已影响0人  MonsFinn

一、关于Null

1. 存在null值的比较

如果null参与比较运算,则结果会被视为false,即会跳过null的比较运算,如>=,<=,<>,>,<,not in,in,!=,在where中使用比较运算符时会直接忽略存在null值的行,可能造成可用数据的缺失。
因此在数据清洗时最好根据需求填充或删除null值。

2. 分组键中存在null值

如果分组键中存在null值,则分组后会将所有null值行聚合为一个字段值为null的组。

3. null参与算术运算

null参与任何算术运算均返回null,类似于numpy的nan。同理,聚合函数对含有null的数据进行运算的时候一般也返回null,除了count(),它会返回非null数值个数。
解决null值运算的方式有在聚合函数中嵌套ifnullisnull函数

二、SQL执行顺序

from —> join —> on —> where —> group by —> having —> select —> distinct —> order by —> limit

三、其他

  1. select与group by
    select后聚合函数一定是仅能返回多个聚合函数加一个分组列,其他行无法返回,谨记,故求聚合数据如最大值的其他相关行数据时必须嵌套,若没有分组,则仅返回一个值,不能返回聚合值同行的其他字段。
  2. 外部联结条件失效
    左连接时,使用 table_a left outer join table_b and table_a =xx时,后面的and条件无效,同理在右联结时,对右表的筛选也无效。
  3. 自联结的作用
上一篇 下一篇

猜你喜欢

热点阅读