SQL编程中的规范

SQL编程也同Java和Python一样,都应该有较为标准的规范

        今天的博文不会讲sql技巧,而是从我们的根源出发,从我们自己的编程习惯出发,就像我们以前学习JAVA和PYTHON一样,都有自己的规范,虽然说SQL还不是被大多数人所看重,但是我们也要有自己的SQL规范。

        下面会从多个角度进行讲解SQL的规范

注释:

        注释也是一个比较有争议的话题,可能有人认为,你们这些臭写SQL的还需要注释呀,其实不然,就算不是SQL,用其他的语言也要写注释。毕竟项目不是一个人做的,是沟通交流的,如果我们偏要按照自己的来,会给其它的伙伴带来阅读上的困难。

        SQL中的注释有两种

-- 单行注释 -- 
从 SomeTable 中查询 col_1 SELECT col_1 FROM SomeTable;



/* --多行注释 --
从someTable 中查询col_1 SELECT col_1 FROM SomeTable;

        我们有单行和多行注释,多行注释就像我们写JAVA时的注释

缩进:

        提到缩进,如果为了整体的美观,缩进是必不可少的,就像python,强制的缩进。如果没有缩进,代码一团糟,看上去一大片,换做是我,我就当场不想看了。下面来介绍一下SQL中的缩进

--好的示例 
select col_1, col_2, col_3 From tbl_A where col_1 = "哈哈"



--不好的示例
 select col_1,col_2,col_3 from tbl_A where col = "哈哈"

        很明显,看到上面那个,我就感觉我能看下去,看到下面那个,我就无语了。虽然有点打脸,但我还是要说一下,我就是第二种的那个。要啥就往一行里面放,不管你有多少,我就一行。需要改改这个毛病了

空格 :

        说到空格,我就想到了java.

                a=2

                a = 2

        上面两个肯定是下面更好拉,再java里面我就是选择的下面那个,这样我们的代码很整洁。不至于让我们看一样看不清。

-- √好的示例
SELECT col_1
  FROM  tbl_A A, tbl_B B
 WHERE ( A.col_1 >= 100 OR A.col_2 IN ( 'a', 'b' ) )
   AND A.col_3 = B.col_3;



-× 坏的示例
SELECT col_1
  FROM tbl_A A,tbl_B B
 WHERE (A.col_1>=100 OR A.col_2 IN ('a','b'))
   AND A.col_3=B.col_3;

        不得不说,看了上面两个代码,我们看到最后一行,加上空格的时候,我们很明显的知道是两个字段的比较,可以很容易的区分要素。到了下面,稍不留神就会看错了。以为是一个要素。

大小写:

        说到大小写,真的很重要。先让大家看一下博主平时的sql

select t.a,min(case when t.rn = 2 then c else null end) min_c,
max(case when t.nn = 2 then c else null end) max_c
from (select a,b,c,row_number() over(partition by a order by b) rn,
row_number() over(partition by a order by b desc) nn
from test_1) t
where t.rn = 2 or t.nn = 2
group by t.a

        要不是SQL中的关键字和函数都有颜色提示,还能看出来。

        这个我要是整理到hive命令行里面,我那要是出错了,都不容易看出来。每次出错都要看老半天,要是我在idea远程连接hive。那么最起码关键字会有颜色提示,也不至于命令行清一色的黑色字体。

        下面,我们加上大小写

-- √大小写有区分,易读
SELECT col_1, col_2, col_3,
       COUNT(*)
  FROM tbl_A
 WHERE col_1 = 'a'
   AND col_2 = ( SELECT MAX(col_2)
  FROM tbl_B
 WHERE col_3 = 100 )
 GROUP BY col_1, col_2, col_3;

赏心悦目,没的说

逗号:

        博主写sqL的时候,习惯“col_,col_2,col_3”先写xol_1再写逗号再写下面的。但是有时候删除一个字段的话,可能会忘记删除逗号,这样导致报错。后来,博主更改了格式。

--以前的习惯 

select a,b,c,d from t 
--现在的习惯
 SELECT     a
         ,  b 
         ,  c 
   FROM t

这种前置逗号有两个好处

  1. 删除c字段的时候,顺带就删除了逗号

  2. 每个逗号都出现在同一列,满足了强迫症患者

不使用通配符

不使用通配符,指的是不用*。我们用select *来获取所有的列,但是我们 并不是真的需要所有的列,应该需要什么我们就写什么。

order by中不使用列编号

ORDER BY 子句中,我们可以使用列的编号代替实际的列名,作为

排序的列来使用。在动态生成 SQL 等情况下,这是很有用的功能,但是

这样的代码可读性很不好

× 
SELECT col_1, col2 
FROM SomeTable 
ORDER BY 1, 2; 

√ 
SELECT col_1, col2 
FROM SomeTable 
ORDER BY col_1, col2;

总结;

有一个良好的编程习惯,不仅对我们好,也对他人的阅读好。

利人利己,让自己有一个好的印象。

不能一提到咱的名字,啊,那个谁谁谁就他每次不写注释,就他的编程格式最让人无语。都不想看他写的代码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL(Structured Query Language)是用于处理关系型数据库编程语言。华为在其SQL编程语言规范,提供了一套指导规则和标准,以确保在编写SQL代码时的一致性和可靠性。 首先,华为的SQL编程语言规范涵盖了SQL语法的用法和限制。这些规范定义了如何编写SQL查询,更新和删除语句,包括语句的结构和关键字的使用方式。这有助于开发人员更好地理解SQL语法,减少语法错误和歧义。 其次,规范还提供了对SQL数据类型和表结构的约定。这些约定可以帮助开发人员在设计数据库时选择适当的数据类型,确保数据的完整性和一致性。 此外,该规范还涉及到SQL查询性能的优化技巧。通过遵循规范的最佳实践,开发人员可以优化查询的执行计划,提高查询速度和性能。规范还包括了如何创建和使用索引、优化查询语句等内容。 另外,该规范还包括了对SQL代码编写风格的要求。规范可能包含对代码缩进、命名规范、注释等方面的建议,以确保代码的可读性和可维护性,降低代码的复杂性和错误率。 最后,规范还可能包含对异常处理和安全性的要求。开发人员需要遵循规范关于处理异常情况和保护数据安全的建议,以保证系统的稳定性和安全性。 综上所述,华为的SQL编程语言规范是一套指导性的标准,帮助开发人员编写合规、高效、可读性强的SQL代码。遵循该规范可以提高开发效率、降低错误发生率,并且促进团队之间的合作和交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值