即使有经验,并不是每个程序员都能编写可读且可维护的漂亮代码。通常,当您学习编码技巧时,编码会随着经验的提高而提高,例如,偏爱于继承而不是继承,或者对接口而非实现进行编码,但是只有少数开发人员能够精通这些技术。这同样适用于SQL查询。您构造查询的方式和编写查询的方式对将您的意图传达给其他开发人员大有帮助。
每当我看到来自多个开发人员的电子邮件中的SQL查询时,都可以看到他们的写作风格截然不同。一些开发人员会巧妙地编写它并缩进他们的查询,这使得发现关键细节变得容易,例如,您从哪个表中提取哪些列以及条件是什么。
在现实生活中的项目中,SQL查询几乎不是一类的。当您以后自己阅读或与某人共享该查询以供查看或执行时,学习编写SQL查询的正确方法将有很大的不同。
在本文中,我将向您展示我过去尝试过的几种方式,它们的优缺点以及我认为是编写SQL查询的最佳方法。
1. SQL查询 方法一

优点:
引入了大小写混合以将关键字与列名和表名分开,例如SELECT大写和Employee原样编写。但是,如果您不一致(例如SELECT大写但from小写),则使用该样式没有任何好处。
缺点
- 混合大小写
- 整个查询写在一行上,随着表和列数的增加,它变得不可读。
- 添加新条件或在没有现有条件的情况下运行没有灵活性。
2. SQL查询 方法二

改善:
SQL查询分为多行,这使它更具可读性。
缺点
- 混合大小写
WHERE子句中的所有条件都在同一行上,这意味着通过注释来排除它们并不是那么容易。
3. SQL查询 方法三(最佳)
优点:
- 将SQL查询分为多行使其更具可读性。
- 使用适当的缩进可轻松发现表和联接之类的数据源。
- 将条件放在单独的行上可让您通过注释以下条件之一来运行查询,如下所示:

顺便说一句,如果您发现有细微的差别,我添加了WHERE 1=1,这意味着您可以在任何条件下进行注释而无需注释该WHERE子句,这在早期版本的查询中是不可能的。
如果您是关键字的大写字母支持者,则还可以SQL query如下所示编写。规则相同,但只将大写字母用作关键字。

这就是如何编写可读性和可维护性更高的SQL查询。欢迎您在评论区发表对SQL查询这种方法的看法。
这是一种较简单的技术,但功能非常强大,并且在提高涉及多个联接的复杂SQL查询的可读性方面还有很长的路要走,如我前面的示例所示。如果愿意,您也可以在线使用各种SQL格式化程序,但是我建议您学习并坚持使用一种方法,而不要依赖格式化程序。
作者:javinpaul
文章来源:https://medium.com/better-programming/mysql-best-practices-b103260f8b45




