SQL代码规范

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

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

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

SQL代码规范如下:

  1. SQL语句中出现的所有表名、表别名、字段名、序列等数据库对象都应小写。

  2. SQL语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写或小写,严禁使用大小写混合的书写。

    例如:

    select SELECT
    where WHERE
    union UNION
    insert INSERT
    count COUNT
    

    错误示范:

    Select -- 常见犯错
    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语句缩进应保持一致(纵向对齐)。

  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 col_1,col_2,col_3
    FROM tbl_A A;-- 不推荐的示例
    SELECT col_1,col_2,col_3
    FROM tbl_A A;
    

SQL书写规范/SQL编码规范,这一篇就够了相关推荐

  1. 第四章 android 命名规范和编码规范

    书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google ...

  2. SQL SERVER数据库命名编码规范

    出处: http://szp930.blog.163.com/blog/static/89688252007106104857647/ 版本记录: 当前版本: 作 者: 完成日期: 签 收 人: 文件 ...

  3. web项目开发 之 前端规范 --- CSS编码规范

    此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范 文档.供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力. 转载请注明出处:JS前端实用开 ...

  4. pep8 python 编码规范_编码规范的重要性

    很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着 Python 编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性. 对于 ...

  5. web项目开发 之 前端规范 --- HTML编码规范

    此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范文 档.供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力. 转载请注明出处,JS前端实用开 ...

  6. c++编码规范_Python02编码规范

    俗话说无规范不方圆 官网 https://www.python.org/dev/peps/pep-0008/ 前言 Guido的主要见解之一是代码被读取的次数多于其编写的次数.此处提供的指南旨在提高代 ...

  7. 【无标题】【2023最新版】超详细Sqlmap安装保姆级教程,SQL注入使用指南,收藏这一篇就够了

    一.sqlmap简介 sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入.目前支持的数据库有MySql.Oracle.Access.PostageSQL. ...

  8. 全网最全的SQL手工注入总结!(收藏这篇就够了!)

    虽说目前互联网上已经有很多关于 sql 注入的神器了,但是在这个 WAF 横行的时代,手工注入往往在一些真实环境中会显得尤为重要.本文主要把以前学过的知识做个总结,不会有详细的知识解读,类似于查询手册 ...

  9. 精述字符编码(读这篇就够了)

    文章目录 1.导语 2.ASCII 3.Latin1 4.ANSI 5.GB2312,GB13000,GBK,GB18030,BIG5 6.Unicode 与 BMP 7.UCS.UCS-2 与 UC ...

  10. 44个Java编码规范与常用知识点

    目录 1.编码规范 1.1.static和final 1.2.不用map传参 1.3.用jackson代替fastjson 1.4.数组转list最高效的方式 1.5.list转数组 1.6.数组复制 ...

最新文章

  1. Android 10.0 PackageManagerService(二)权限扫描-[Android取经之路]
  2. C语言 03-第一个C程序代码分析
  3. RSA非对称加密算法Java实现
  4. 语音识别中强制对齐_语音识别中的标注问题和嵌入式训练
  5. 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
  6. leetcode256. 粉刷房子
  7. Python 中的range,以及numpy包中的arange函数
  8. 开启NLP新时代的BERT模型,真的好上手吗?
  9. linux相关系统下qtcreator调试程序
  10. python学习之路-day8
  11. github电脑壁纸_程序员必用的电脑桌面!
  12. matlab中 dataset用法,dataset中shuffle()、repeat()、batch()用法
  13. Java 基本数据类型(四类八种)
  14. 计算机色彩学,浅析色彩原理
  15. 第3章基本程序设计结构(java知识点笔记)
  16. 威廉玛丽学院计算机专业好吗,威廉玛丽学院计算机科学研究生最新专业排名
  17. netcore 集成 CAP 使用 rabbitMQ集群
  18. 医疗空气净化器系统软件总体设计
  19. 陀螺产业区块链第十五季 | 博雅正链RegChain
  20. 利用JS来设计夜场的倒计时以及进入页面

热门文章

  1. 树莓派3B+踩坑记录:一、安装Ubuntu Mate
  2. DirectSound学习1
  3. SecureCRT中文乱码,导致上传到nginx上的文件乱码,访问报404
  4. 使用postMessage传值遇到的问题
  5. WEB前端大作业-个人资料展示响应式网页模板(HTML JS CSS)
  6. 数组实现环形队列——Java随解
  7. 趣图:男生、女生、git log 三者讲故事的差别
  8. 对前端开发来说,学历真的重要吗?
  9. Linuxptp使用总结
  10. 51单片机循环流水灯源码