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

数据库 SQL Server
在本文中,我将向您展示一些我过去尝试过的编写风格,介绍它们的优缺点以及我认为最好的SQL查询编写方式。除非你有很好的理由不使用我推荐的风格,例如:你有更好的风格,或者你想坚持项目中一直使用的风格(一致性压倒一切),没有理由不使用它。

[[236358]]

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

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

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的方式

 

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

优点:

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

 

缺点:

  • 1)大小写混合
  • 2)整个查询写在一行上,一旦表和列的数量增加,这一行就不可读了
  • 3)在添加新条件或删掉条件时没有灵活性

第二种书写SQL查询的方式

 

  1. SELECT e.emp_id, e.emp_name, d.dept_name, p.project_name 
  2. from Employee e 
  3. INNER JOIN Department d ON e.dept_id = d.dept_id 
  4. INNER JOIN Projects p ON e.project_id = p.project_id 
  5. Where d.dept_name="finance"  
  6. and e.emp_name like '%A%'  
  7. and e.salary > 500; 

改进:

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

问题

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

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

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

 

  1. select e.emp_id, e.emp_name, d.dept_name 
  2. from Employee e 
  3. inner join Department d on e.dept_id = d.dept_id 
  4. where d.dept_name = 'finance' 
  5. and e.emp_name like '%A%' 
  6. and e.salary > 500; 
  • 1)将SQL查询划分为多行可以提高可读性
  • 2)使用适当的缩进可以很容易地找到数据源,例如表和join
  • 3)让条件语句都放在单独的行上,可以容易的注释掉某个条件进行调试。

 

  1. select e.emp_id, e.emp_name, d.dept_name 
  2. from Employee e 
  3. inner join Department d on e.dept_id = d.dept_id 
  4. where d.dept_name = 'finance' 
  5. -- and e.emp_name like '%A%'; 
  6. add e.salary > 5000 

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

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

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

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

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

感谢阅读本文,请让我们知道如何编写SQL查询?你用的是哪种风格,还是你有自己的风格?如果您是初学者和学习SQL,您会发现我的免费SQL课程和书籍列表对你会有帮助。

责任编辑:未丽燕 来源: 程序师
相关推荐

2022-03-11 12:14:43

CSS代码前端

2021-12-07 08:16:34

React 前端 组件

2021-12-13 14:37:37

React组件前端

2010-08-16 10:10:22

SQL脚本

2022-09-08 07:32:56

JDK7程序管理

2022-05-13 08:48:50

React组件TypeScrip

2023-12-21 10:26:30

​​Prettier

2020-04-03 14:55:39

Python 代码编程

2022-03-08 06:41:35

css代码

2024-05-24 10:51:51

框架Java

2019-09-29 16:17:25

Java代码性能编程语言

2022-09-27 15:34:05

VSCode插件开发

2021-01-04 05:46:08

代码编程重构

2024-08-20 14:25:20

2021-01-04 07:57:07

C++工具代码

2019-09-20 15:47:24

代码JavaScript副作用

2022-04-10 10:41:17

ESLint异步代码

2017-07-12 13:04:23

数据库SQL查询执行计划

2016-12-15 09:58:26

优化SQL高性能

2023-11-23 13:50:00

Python代码
点赞
收藏

51CTO技术栈公众号