【无废话之没啥用的小技巧】让SQL代码变得优美的三个小操作

SQL语言简单,使用频繁。但相比于其他语言,它本身用于查询的特性,决定了最高频的使用场景是快速且准确的和数据库io。可能没有很复杂的逻辑,但其中引用的字段的运算和数据加工逻辑,尤其是业务人员基于实际需要,对数据层层加工后输出结果,如果没有详细的注释,代码的交接和管理将变得异常麻烦。

开发过程中强烈建议补充全面的注释,同步利用代码缩进技巧让嵌套关系一目了然。**一段脚本好不好,让人用着舒服其实很重要。**这是我们对一段SQL脚本是否专业,是否好用的很在意的评价指标。

但细节决定成败,脚本可以覆盖全面的注释,可以逻辑清晰,没有废话。但如何变得优美,又对代码提出了更高的要求。更像是一篇作文,辞藻优美之后,卷面整洁,字体工整,往往还能拉开一两分的差距。

本篇默认你已经掌握了vscode 正版 开源编辑器的下载与使用,并且熟悉一些最基础的操作技巧,让你可以熟练的在其中编写SQL代码。以下技巧存在强迫症之嫌,望读者明加分辨,去其糟粕。

step1.建表语句怎么写,字段定义怎么建?


    CREATE TABLE IF NOT EXISTS ADHOC_DATA.G701130_GGDAYREPORT
    (
         TM_DPST_BAL                DECIMAL(18,4)       -- 定期存款余额
        ,TM_DPST_BAL_SUB_D          DECIMAL(18,4)       -- 定期存款余额日增量
        ,TM_DPST_BAL_SUB_M          DECIMAL(18,4)       -- 定期存款余额月增量
        ,TM_DPST_BAL_SUB_Y          DECIMAL(18,4)       -- 定期存款余额年增量
        
        ,STRU_CHREM_BAL             DECIMAL(18,4)       -- 结构性存款余额
        ,STRU_CHREM_BAL_SUB_D       DECIMAL(18,4)       -- 结构性存款余额日增量
        ,STRU_CHREM_BAL_SUB_M       DECIMAL(18,4)       -- 结构性存款余额月增量
        ,STRU_CHREM_BAL_SUB_Y       DECIMAL(18,4)       -- 结构性存款余额年增量
    )
    DISTRIBUTE BY HASH (DATA_DT);

要点:

  1. 三段式或四段式结构,三段式包含 “字段名称 - 数据类型 - 注释中文定义”,四段式包含 “字段名称 - 数据类型 - 字段重命名或数据库展示内容(多用comment或as关键字引用) - 注释中文定义”。
  2. 字段命名应当清晰,命名一目了然,尽可能依靠查看字段名即可大致推测出实际含义,在一份代码中同类型口径的命名应当保持统一,增加意义可以通过添加下划线进行内容补充。例:TM_DPST_BAL_SUB_D,TM_DPST - time deposit,定期存款;BAL - balance 余额;SUB - substruction 减法;D - day 天,可以翻译为:定期存款余额前后两天相减,即,定期存款余额日增量。
  3. 在vscode或其他IDE中,tab命令应当严格设置为“按空格缩进,缩进量为四个空格”
  4. 代码中每段信息的分隔,都应当是上一个字段结束后,下一个开始前加入一个tab命令。上面代码每个分隔的开头,都是从这一行的第1,5,9,13,17,21…个位置开始写。
  5. 全部大写,看着整齐。

step2.代码如何改造为Q1?使用列模式同步缩进和输入内容,但是发现代码没有预留空格,怎么快捷处理?

        ,AUM_UP_DAY_TONG   DECIMAL(38,4)
        ,AUM_UP_MONTH_TONG   DECIMAL(38,4)
        ,AUM_UP_MONTH_AUM_TONG   DECIMAL(38,4)
        ,AUM_BAL_BASE_MINUS_TONG   DECIMAL(38,4)
        ,AUM_BAL_BASE_MINUS_MON_TONG   DECIMAL(38,4)
        ,AUM_BAL_BASE_MINUS_YEAR_TONG    DECIMAL(38,4)

如何优化这段截取出来的代码?

  1. 字段和数据格式的定义太紧凑了,字段里最长的一条,和数据定义里最短的一条,在列的方向上是重合的,应该将他们分开。使用替换命令,将原先的一个空格,替换为更多的空格,强行拉开距离,这里我使用八个空格替换一个空格,代码变成这样。
                                                                ,AUM_UP_DAY_TONG                        DECIMAL(38,4)
                                                                ,AUM_UP_MONTH_TONG                        DECIMAL(38,4)
                                                                ,AUM_UP_MONTH_AUM_TONG                        DECIMAL(38,4)
                                                                ,AUM_BAL_BASE_MINUS_TONG                        DECIMAL(38,4)
                                                                ,AUM_BAL_BASE_MINUS_MON_TONG                        DECIMAL(38,4)
                                                                ,AUM_BAL_BASE_MINUS_YEAR_TONG                                DECIMAL(38,4)
  1. 使用列模式,从最长数据定义名称和最短数据格式定义之间切割,并拖拽选取全部后面的数据格式内容。并剪切,粘贴放入新建页面。
-- 原始页内容
                                                                ,AUM_UP_DAY_TONG                 
                                                                ,AUM_UP_MONTH_TONG               
                                                                ,AUM_UP_MONTH_AUM_TONG           
                                                                ,AUM_BAL_BASE_MINUS_TONG         
                                                                ,AUM_BAL_BASE_MINUS_MON_TONG     
                                                                ,AUM_BAL_BASE_MINUS_YEAR_TONG    
-- 新建页内容
       DECIMAL(38,4)
         DECIMAL(38,4)
             DECIMAL(38,4)
               DECIMAL(38,4)
                   DECIMAL(38,4)
                            DECIMAL(38,4)
  1. 将新建页的空格全部替换为‘啥都没有’之后,用列模式剪切回原始页。并将前面的部分用列模式删除到正常的距离。
-- 新建页内容

    ,AUM_UP_DAY_TONG                 DECIMAL(38,4)
    ,AUM_UP_MONTH_TONG               DECIMAL(38,4)
    ,AUM_UP_MONTH_AUM_TONG           DECIMAL(38,4)
    ,AUM_BAL_BASE_MINUS_TONG         DECIMAL(38,4)
    ,AUM_BAL_BASE_MINUS_MON_TONG     DECIMAL(38,4)
    ,AUM_BAL_BASE_MINUS_YEAR_TONG    DECIMAL(38,4)

搞定。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值