# 5. SQL易错点

  1. 使用 COUNT(*) 判断是否存在符合条件的数据。❌

    效率低,每次都要扫描全表。

    应该用:SELECT ... LIMIT 1

    LIMIT 只要找到符合条数的数据后就会立刻返回。

  2. 在执行一个更新语句后,使用查询方式判断此更新语句是否有执行成功。❌

    使用 ROW_COUNT() 函数判断修改行数会更好。

  3. 视图在 ON 条件中过滤不满足条件的记录。❌

    都用 WHERE 来过滤比较好。

    ON 过滤的话有时候是失败的。(LEFT JOIN 会保留左表的所有数据,不存在就置为 NULL)

  4. 在使用 IN 进行子查询的判断时,在列中为指定正确的表名,如 SELECT A1 FROM A WHERE A1 IN (SELECT A1 FROM B)。这时尽管 B 中并不存在 A1 列,数据库也不会报错,而是会列出 A 表中的所有数据。 ❌

    使用 JOIN 关联代替子查询。

  5. 对于表中定义的具有 NOT NULL 和 DEFAULT 值的列,在插入数据时直接插入 NULL 值。❌

上次更新: 8/5/2021, 9:08:33 PM