美文网首页
MySQL注意事项

MySQL注意事项

作者: MonsFinn | 来源:发表于2020-05-05 16:54 被阅读0次

    一、关于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

    • where的操作对象是from或join后生成的临时表,故其操作字段可以是全部字段
    • group by的操作对象是where后生成的临时表,故可操作字段是全部字段
    • having的操作对象仅可以是groupby后接的字段或者任何聚合函数

    三、其他

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

    相关文章

      网友评论

          本文标题:MySQL注意事项

          本文链接:https://www.haomeiwen.com/subject/atgmghtx.html