此帐号已被封,内容无法查看 此帐号的内容被自由微信解封
文章于 2022年7月1日 被检测为删除。
查看原文
被微信屏蔽
其他

如何优雅的写出你的SQL语句?网友:竟然还有这种骚操作~

推荐关注一个公众号

关注程序员小乐带你玩爆编程技术


哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里,大家记得将程序员小乐的公众号 加星标置顶 ,在此真诚的表示感谢~


来源:blog.csdn.net/weixin_28995873/article/details/113295467


上一篇干货:IDEA 注释模板这样搞,看了都说好!



正文



大家好,我是小乐。

毫无疑问,编写代码是一门艺术而非科学,没有程序员可以编写出既可读又可维护的漂亮代码,即使有经验也是如此。


一般来说,当您学习编码的艺术时,编码水平会随着经验而提高,例如,你会变得更喜欢组合而不是继承或更喜欢接口而不是实现,但是只有少数开发人员能够掌握这些技术。


SQL查询也是如此。您构建查询的方式,您编写它的方式,如果正确的话,可以很好地将您的意图传达给其他开发人员。


常常,在我看到来自多个开发人员的电子邮件中的SQL查询时,我能看出他们的编写风格的显著差异。一些开发人员编写得非常整洁,并且对查询进行了适当的缩进,这使得很容易发现关键细节,例如,从哪个表中提取哪些列以及哪些是条件。


因为在实际的项目中,SQL查询并不是单行的,所以当您需要以后阅读这些SQL查询或需要将该查询共享给某人进行检查或执行时,这种情况下,学习正确的编写SQL查询的方式会带来很大的不同。


在本文中,我将向您展示一些我过去尝试过的编写风格,介绍它们的优缺点以及我认为最好的SQL查询编写方式。


除非你有很好的理由不使用我推荐的风格,例如:你有更好的风格,或者你想坚持项目中一直使用的风格(一致性压倒一切),没有理由不使用它。


顺便说一句,我希望您熟悉SQL,了解SQL查询中的不同子句及其含义。如果不是,你最好通过参加一个很好的课程来获得SQL经验,比如:


  • From 0 To 1:SQL And Databases — Heavy Lifting by Loony Corn

  • Introduction to SQL by Jon Flanders


我强烈推荐后者。


# 第一种写SQL的方式


SELECT e.emp_id, e.emp_name, d.dept_name, p.project_name from Employee e INNER JOIN Department d ON e.dept_id = d.dept_id INNER JOIN Projects p ON e.project_id = p.project_id Where d.dept_name="finance" and e.emp_name like '%A%' and e.salary > 5000;

优点:


1)使用了大小写混合将关键字从列和表名之间分开,如SELECT使用大写,而Employee使用首字母大写,但如果你喜欢一致性的话,可以让from关键字也大写,没有研究只显示那种写法更好。


缺点:


1)大小写混合


2)整个查询写在一行上,一旦表和列的数量增加,这一行就不可读了


3)在添加新条件或删掉条件时没有灵活性


另外搜索公众号Linux就该这样学回复关键字"猴子”获取一份惊喜礼包。


# 第二种书写SQL查询的方式


SELECT e.emp_id, e.emp_name, d.dept_name, p.project_namefrom Employee eINNER JOIN Department d ON e.dept_id = d.dept_idINNER JOIN Projects p ON e.project_id = p.project_idWhere d.dept_name="finance" and e.emp_name like '%A%' and e.salary > 500;

改进:


1) SQL查询被划分为多行,使其更具可读性


问题


1)大小写混合


2) where子句上的所有条件位于同一行上,也就是说通过注释排除它们不是那么容易。



# 第三种书写SQL的方式,也是做好的一种


select e.emp_id, e.emp_name, d.dept_namefrom Employee einner join Department d on e.dept_id = d.dept_idwhere d.dept_name = 'finance'and e.emp_name like '%A%'and e.salary > 500;

1)将SQL查询划分为多行可以提高可读性


2)使用适当的缩进可以很容易地找到数据源,例如表和join


3)让条件语句都放在单独的行上,可以容易的注释掉某个条件进行调试。

select e.emp_id, e.emp_name, d.dept_namefrom Employee einner join Department d on e.dept_id = d.dept_idwhere d.dept_name = 'finance'-- and e.emp_name like '%A%';add e.salary > 5000

顺便说一句,如果您喜欢用大写字母表示关键字,您还可以编写如下所示的相同的SQL查询,这些规则是相同的,只是关键字是大写字母。



这就是我要说的如何编写可读和更易于维护的SQL查询。对于SQL查询的缩进或样式化,您有什么看法?


这是一种简单的技术,但非常强大,对于提高涉及多个连接的复杂SQL查询的可读性大有帮助,如我前面的示例所示。


如果您喜欢,也可以在网上使用各种SQL格式器,但我建议您学习一种样式并坚持使用它,而不是依赖于格式器。


最后给读者整理了一份BAT大厂面试真题,需要的可扫码加微信备注:“面试”获取。


--END--

(放到你圈子里,朋友们会感激您)PS:如果觉得我    的分享不错,欢迎大家随手点赞、在看。本文仅供交流学习 , 版权归属原作者。温馨提示:《程序员小乐》推文内容如有侵权请您告知我们会在第一时间处理或撤销;互联网是一个资源共享的生态圈,我们崇尚分享。往日好文:

硬核!一套基于SpringBoot + Vue 的开源物联网智能家居系统(附源码)!

Mybatis-Plus 官方神器发布!

Mybatis-Plus 官方神器发布!

阿里面试:“说一下从 url 输入到返回请求的过程”

一个月薪12000的北京程序员的真实生活

SQL 优化极简法则

在浏览器输入 URL 回车之后发生了什么(流程图,超详细版)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存