如何更优雅的写出你的SQL语句
除非你有很好的理由不使用我推荐的风格,例如:你有更好的风格,或者你想坚持项目中一直使用的风格(一致性压倒一切),没有理由不使用它。
顺便说一句,我希望您熟悉SQL,了解SQL查询中的不同子句及其含义。如果不是,你最好通过参加一个很好的课程来获得SQL经验。
第一种写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)大小写混合
2)整个查询写在一行上,一旦表和列的数量增加,这一行就不可读了
3)在添加新条件或删掉条件时没有灵活性
第二种书写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 > 500;
改进:
1) SQL查询被划分为多行,使其更具可读性
问题
1)大小写混合
2) where子句上的所有条件位于同一行上,也就是说通过注释排除它们不是那么容易。
第三种书写SQL的方式,也是最好的一种
select e.emp_id, e.emp_name, d.dept_name
from Employee e
inner join Department d on e.dept_id = d.dept_id
where d.dept_name = 'finance'
and e.emp_name like '%A%'
and e.salary > 500;
2)使用适当的缩进可以很容易地找到数据源,例如表和join
3)让条件语句都放在单独的行上,可以容易的注释掉某个条件进行调试。
select e.emp_id, e.emp_name, d.dept_name
from Employee e
inner join Department d on e.dept_id = d.dept_id
where d.dept_name = 'finance'
-- and e.emp_name like '%A%';
and e.salary > 5000
这就是我要说的如何编写可读和更易于维护的SQL查询。对于SQL查询的缩进或样式化,您有什么看法?
这是一种简单的技术,但非常强大,对于提高涉及多个连接的复杂SQL查询的可读性大有帮助,如我前面的示例所示。
如果您喜欢,也可以在网上使用各种SQL格式器,但我建议您学习一种样式并坚持使用它,而不是依赖于格式器。
作者:天使不哭
微信号:hgmyzhl
微信公众号:小明互联网技术分享社区
CSDN:IT技术分享社区
知乎:IT技术分享社区
出处:小明互联网技术分享社区
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.