SQL书写规范/SQL编码规范,这一篇就够了

本文详细介绍了SQL编码规范,包括关键字的大小写使用、字符串的引号选择、缩进与对齐规则、禁止使用select*操作等内容,旨在提升SQL代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# SQL代码规范

SQL(Structured Query Language),结构化查询语言。在数据分析、数据开发、数据库、大数据等的领域,具有不可或缺的地位,运用十分广泛。

规范化的SQL代码,能够提高代码的可读性,有利于快速定位问题,更有利于团队合作。合理的代码注释也有助于对代码的理解。

但是规范不等于强制约束,我们推荐使用SQL的过程中能注意编码规范,使得代码清晰、整齐、层次分明、结构性强。同时还有一些规范也是行业内约定俗成的,保持良好的编码规范也是一个优秀的程序员必备的素质。

SQL代码规范如下:

  1. SQL语句中的大小写要注意区分,一般会用大小写区分SQL关键字和被处理的表和字段等。

    -- 例如:sql关键字用大写,表和字段等被处理对象用小写
    SELECT
    	s.name
    	,s.age
    	,s.grade
    FROM student s ;
    
  2. SQL语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写或小写,严禁使用大小写混合的书写。

    错误示范:

    Select -- 常见犯错
    
    select clo1 FROM table1 where 1=1 AND 2=2 -- 有些关键字用了大写、有些用了小写
    
  3. 推荐使用单引号来表示字符值、字符串。

    扩展:【SQL中单引号、双引号的区别】

    原则上英文单引号、英文双引号都可以,一般应使用单引号。

    如果字符串内需要包含单引号时,除了使用转义的办法外,我们可以选用一对双引号来包括字符串,这样字符串内的单引号被视作普通字符,无需特殊处理。
    例如:Dljiang’s dog。以下三条语句输出是一致的,显然第一句更清晰

    SELECT "Dljiang's dog";
    SELECT 'Dljiang''s dog';
    SELECT 'Dljiang\'s dog';
    

    如果使用英文双引号引用的字符串内需要包含双引号时,除了使用转义的办法外,我们可以用一对单引号来包括字符串,这样字符串内的双引号被视作普通字符,无需特殊处理。
    例如:She said: “Handsome Dljiang”。以下三条语句输出是一致的,显然第一句更清晰

    SELECT 'She said: "Handsome Dljiang"';
    SELECT "She said: ""Handsome Dljiang""";
    SELECT "She said: \"Handsome Dljiang\"";
    
  4. 缩进应为1个Tab或者4个字符,所有的缩进均为1个缩进量的整数倍,按照代码层次对齐,同层次的SQL语句缩进应保持一致(纵向对齐)。

    -- 这里的同层次的理解:
    -- 1是 查询 和 子查询,用缩进可以一目了然;
    -- 2是在同一语句中,字段对齐、表对齐、关联条件对齐、过滤条件对齐等等
    SELECT
    	s.name
    	,s.age
    	,s.grade
    	,c.name AS class_name
    FROM 
    	student s 
    	INNER JOIN class c ON c.stu_id = s.stu_id
    WHERE TRUE
    	AND s.grade >= 80 
    	AND c.name = '数学'
    
  5. 禁止使用select *操作,所有操作必须明确指定列名。

  6. 对应的括号要求在同一列的位置上,尤其用在子查询嵌套中!

  7. 代码中需要添加必要的注释,以增强代码的可读性。注释的规范:

    每条SQL语句的注释单独成行,并放在语句的前面;

    字段注释紧跟在字段后面;

    对不易理解的分支条件表达式添加注释;

    对重要的计算添加注释,说明其功能。

    -- 单行注释
    
    /*
    	多行注释
    	多行注释
    */
    
  8. select / from / where / order by / group by 等语句应独占一行。

  9. 子句跟语句占同一行原则:

    select子句内容如果只有一项,应与 select 同占一行;

    from 子句内容如果只有一项,应与 from 同占一行;

    where 子句内容如果只有一项,应与 where 同占一行。

  10. 子句单独占一行原则:

    select 子句内容如果多于一项,每一项都应独占一行,并在对应 select 的基础上向右缩进1个Tab或者4个字符;

    from 子句内容如果多于一项,每一项都应独占一行,并在对应 from 的基础上向右缩进1个Tab或者4个字符;

    where 子句的条件如果有多项,每一个条件应独占一行,并以 and 开头,并在对应 where 的基础上向右缩进1个Tab或者4个字符。

  11. SQL文中不应出现空行。

  12. 合理使用空格。代码中应该适当留有一些空格,如果一点不留,代码都凑到一起, 逻辑单元不明确。

    -- 好的示例
    SELECT 
    	col_1
    	,col_2
    FROM tbl_a a
    WHERE A.col_1 >= 100 ;
       
    -- 坏的示例
    SELECT 
    	col_1
    	,col_2
    FROM tbl_a a
    WHERE a.col_1>=100 ;
    
  13. 不等于推荐使用符号<>。

  14. 表名要有意义,且标准 SQL 中规定表名的第一个字符应该是字母。

  15. insert 子句写在同一行,请勿换行。

  16. SQL语句中出现多个表时,给每个表加上表别名。表别名的规范:

    一旦在SELECT语句中给操作表定义了别名,在整个语句中对此表的引用都必须以别名替代,所以需要给所有的表添加别名;

    表别名采用简单字符命名,建议按a、b、c、d…的顺序进行命名,并避免使用关键字;

    多层次的嵌套子查询别名之前要体现层次关系,SQL语句的别名需要分层命名,从第1层次至第4层次,分别用P(Part) 、S(Segment)、 U(Unit) 和D(Detail)表示。您也可以用a、b、c、d来表示第1层次到第4层次。

    对于同一层次的多个子句,在字母后加1、2、3、4……区分,并根据情况对表别名添加注释;

  17. select 语句查询的字段,推荐将 , 写在字段前面。

    -- 好的示例
    SELECT 
    	a.col_1
    	,a.col_2
    	,a.col_3
    FROM tbl_a a;
    
    -- 不推荐的示例
    SELECT 
    	a.col_1,
    	a.col_2,
    	a.col_3
    FROM tbl_a a;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

developer_jiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值