文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SQL的常见错误有哪些

2024-04-02 19:55

关注

本篇内容主要讲解“SQL的常见错误有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL的常见错误有哪些”吧!

1. Queries语句的执行顺序

SQL的常见错误有哪些

SQL的入门门槛很低。很多人认为会使用Join, Group By 语句就可以自诩专家了。但是“砖家”们真的知道SQL语句的执行顺序吗?

SQL查询不是以SELECT开始的,虽然我们编写代码时,它们在编辑器中是从Select开始编写的,但是实际执行却并不是从SELECT开始的。

数据库首先使用FROM和JOIN执行查询,这就是为什么我们可以在WHERE中使用合并表中的值。

为什么我们不能在WHERE语句中筛选分组(GROUP BY) 的结果?因为GROUP  BY在WHERE之后才会被执行。因此,我们需要通过HAVING进行更进一步的条件筛选。

常规情况下,SELECT是最后执行语句。它决定了查询结果需要输出哪些列,并进行何种聚合运算。此外,WINDOW FUNCTION 在这一步被执行。

这就是为什么当我们尝试在WHERE中筛选WINDOW FUNCTION的结果时会出现错误。

注意:数据库使用查询优化器来优化查询语句执行。优化器可能会更改某些操作的顺序,以便查询运行得更快。以上的介绍是正对常见情况下,对SQL执行幕后所发生事情的笼统的概述。

2. WINDOW FUNCTION 是做什么的?

SQL的常见错误有哪些

很多人第一次遇到WINDOW FUNCTION时都觉得它似乎很神秘。为什么使用Window function作为分组可以聚合数据?

Window Function (WF) 通过特定语句简化了许多操作步骤以方便语句运行:

SQL的常见错误有哪些

上面的WF计算的就是从第一个记录到当前记录的累计总和。

Window Function值得你去专门花时间学习一下基本原理,不然很可能会把查询语句写得过于复杂以至于程序报错。

3. 利用CASE WHEN 计算平均值

SQL的常见错误有哪些

CASE  WHEN类似于编程语言中的IF条件语句。当我们需要对数据的某个子集计算统计信息时,它的作用就显现出来了。

上面的代码计算了在美国销售的产品的平均价格,但是这段代码有一点小问题,也就是对于Else的编写是有问题的。

在第一个个语句中,这段代码将所有非美国产品价格设为0,这降低了总体平均价格。如果有很多非美国产品,平均价格可能接近于0。

SQL的常见错误有哪些

在第二个例子中,它只计算了在美国销售的产品的平均价格,这才是我需要的结果。请注意在这里使用CASE时不需要包括ELSE,因为它默认为NULL。

SQL的常见错误有哪些

请注意在使用CASE语句时,一定要小心使用“else 0”。它对SUM没有任何影响,但是会对AVG平均计算产生巨大影响。

4. 对存在缺失值的列执行JOIN语句

SQL的常见错误有哪些

SQL中有4种不同的JOIN: Inner,  Outer, Left和Right。当我们在查询中使用JOIN时,它默认为INNER JOIN。

虽然我对JOIN有一些研究学习,但是我还是会犯一些小错误。

如上图所示执行JOIN语句,结果显示许多记录都丢失了。为什么会这样?明明是很简单的JOIN语句。

真是的原因其实是表1和表2中string_field列存在许多NULL值。通常人们会认为JOIN会保留NULL的记录因为NULL等于NULL,难道不是吗?

然后我运行如下语句:

SQL的常见错误有哪些

结果返回的是NULL。

对于这种情况,为了不丢失有NULL的记录,解决方法应该是利用COALESCE,将string_field中的NULL转换为空字符串。

SQL的常见错误有哪些

但需要注意的是,这样做会将表1中每个包含NULL的记录与表2中每个包含NULL的记录全部匹配起来。

通过使用ROW_NUMBER() 的 WINDOW FUNCTION,我们可以移除这些重复的匹配:

SQL的常见错误有哪些

5. 对于复杂的查询语句不会使用临时表

SQL的常见错误有哪些

SQL另外一大优点就是能够调试纠错。

我们可以拆分复杂的查询语句并创建多个临时表。然后可以对这些表运行“完整性检查”,以确保它们包含正确的记录。在设计一个全新且重要的查询或报告时,强烈推荐使用这种方法。

SQL的常见错误有哪些

临时表的唯一缺点是数据库中的查询优化器无法优化该查询。

当需要保证执行效率时,可以将创建临时表的语句用with语句重新定义、查询。

SQL的常见错误有哪些

到此,相信大家对“SQL的常见错误有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯