如何更优雅的写出你的SQL语句

简介: SQL数据库开发

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


一般来说,当您学习编码的艺术时,编码水平会随着经验而提高,例如,你会变得更喜欢组合而不是继承或更喜欢接口而不是实现,但是只有少数开发人员能够掌握这些技术。SQL查询也是如此。您构建查询的方式,您编写它的方式,如果正确的话,可以很好地将您的意图传达给其他开发人员。常常,在我看到来自多个开发人员的电子邮件中的SQL查询时,我能看出他们的编写风格的显著差异。一些开发人员编写得非常整洁,并且对查询进行了适当的缩进,这使得很容易发现关键细节,例如,从哪个表中提取哪些列以及哪些是条件。因为在实际的项目中,SQL查询并不是单行的,所以当您需要以后阅读这些SQL查询或需要将该查询共享给某人进行检查或执行时,这种情况下,学习正确的编写SQL查询的方式会带来很大的不同。在本文中,我将向您展示一些我过去尝试过的编写风格,介绍它们的优缺点以及我认为最好的SQL查询编写方式。

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

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


第一种写SQL的方式

40.png

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

缺点:

1)大小写混合

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

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


第二种书写SQL查询的方式

41.png

改进:

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

问题

1)大小写混合

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

42.jpg

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

43.png

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

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

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

44.png

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

45.jpg

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

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

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

                                                       ——End——


相关文章
|
SQL XML Oracle
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
518 0
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
|
5月前
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
74 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
SQL 存储 关系型数据库
MySQL的第一篇文章——了解数据库、简单的SQL语句
MySQL的第一篇文章——了解数据库、简单的SQL语句
|
SQL Python
Pandas与SQL的数据操作语句对照
Pandas与SQL的数据操作语句对照
164 0
Pandas与SQL的数据操作语句对照
|
SQL 数据库 Python
Python 数据库Insert语句脚本生成工具(SQL Server)
Python 数据库Insert语句脚本生成工具(SQL Server)
385 0
Python 数据库Insert语句脚本生成工具(SQL Server)
|
SQL 程序员 开发工具
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
538 0
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
|
SQL 数据库 数据安全/隐私保护
使用SQL语句 查询电话号码 加密显示
使用SQL语句 查询电话号码 加密显示
334 0
使用SQL语句 查询电话号码 加密显示
|
SQL 存储 安全
MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率
MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率
MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率