【MySQL】SQL语句书写规范,让代码更优雅

您所在的位置:网站首页 ps4密码格式要大小写吗 【MySQL】SQL语句书写规范,让代码更优雅

【MySQL】SQL语句书写规范,让代码更优雅

2024-07-11 01:59| 来源: 网络整理| 查看: 265

SQL语句书写规范,让代码更优雅 SQL编写总规范书写规范总结1.书写标准2.命名规则3.注释4.书写规则补充 SQL书写规范(详细)

为了便于快速查看SQL书写规范,建议直接浏览书写规范总结。

SQL编写总规范 SQL语句应正确、规范、高效和最优;同一项目的SQL书写格式应该统一;应避免写非常复杂的SQL语句;SQL语句不应在客户端组织,而应在服务器端组织;SQL语句的语法应与所使用的数据库相适应;应确保变量和参数的类型和大小与数据库中表数据列相匹配;使用SELECT语句时,应指出列名,不应使用列的序号或者用“*”替代所有列名;

示例:

//正确的示例 SELECT list.manifest_no, list.bill_no, stat.list_stat FROM mft_list list, list_stat stat WHERE list.manifest_no = stat.manifest_no AND list.bill_no = stat.list_no; 使用INSERT语句时,应指定插入的字段名,不应不指定字段名直接插入VALUES;如果 SQL 语句连接多表时,应使用表的别名来引用列;SQL语句应避免对大表的全表扫描操作,对大表的操作应尽量使用索引;SQL语句应避免不必要的排序;SQL语句应避免删除全表的操作;应使用变量绑定实现SQL语句共享,避免使用硬编码; SELECT emp_name FROM emp WHERE emp_no = :B1; //Bind value: 123 SELECT emp_name FROM emp WHERE emp_no = :B1; //Bind value: 987 SELECT emp_name FROM emp WHERE emp_no = 123; SELECT emp_name FROM emp WHERE emp_no = 987; 在含有子查询的SQL语句中,应减少对表的查询; UPDATE emp SET emp_cat = ( SELECT MAX(category) FROM emp_categories), sal_range = ( SELECT MAX(sal_range) FROM emp_categories) WHERE emp_dept = 0020; UPDATE emp SET (emp_cat, sal_range) = ( SELECT MAX(category), MAX(sal_range) FROM emp_categories) WHERE emp_dept = 0020; SQL语句尽可能避免多表联合复杂查询;应将SQL语句中的数据库函数、计算表达式等放置在等号右边;应按照业务需要使用事务,同时应保持事务简短,避免大事务;在事务完整性的基础上,SQL语句应在程序中显式使用 COMMIT,ROLLBACK,尽快提交事务,释放系统资源;SQL语句应避免频繁引起数据库事务回滚。 书写规范总结 1.书写标准

缩进 (1) 一般缩进为4个空格。 (2)不要用Tab制表符来作缩进

换行 (1)Select/From/Where/Order by/Groupby等子句必须另起一行写。 (2)Select子句内容如果只有一项,与Select同行写。 (3) Select子句内容如果多于一项,每一项单独占一行,在对应Select的基础上向右缩进4空格。 (4) From子句内容如果只有一项,与From同行写。 (5) From子句内容如果多于一项,每一项单独占一行,在对应From的基础上向右缩进4个空格。 (6)Where子句的条件如果有多项,每一个条件占一行,以AND或者OR开头,在对应Where的基础 上向右缩进4个空格。 (7)(Update)Set子句内容每一项单独占一行,无缩进。 (8)Insert子句内容每个表字段单独占一行,无缩进;values每一项单独占一行,无缩进。 (9) SQL文中间不允许出现空行。 (10)存储过程或函数输入参数命名以in开头,如@in_Year;输出参数以out开头,如@out_money;局部变量首字母小写,第二个单词起的每个单词的首字母大写,不使用“_”,如@customerCount;

空格 (1)连接符or、in、and、以及=、=等前后加上一个空格; (2)逗号之后必须接一个空格; (3)关键字、保留字和左括号之间必须有一个空格。

2.命名规则

常见命名规则有四种样式:完全大写、完全小写、Pascal 大小写和 Camel 大小写。

Camel 大小写 标识符的首字母小写,每个后面连接的单词的首字母大写,其余字母小写的书写约定。对于缩写的双字母单词,要求它们出现在标识符首部时全部小写,否则全部大写。 例如:applicationException id

Pascal 大小写 组成标识符的每个单词的首字母大写,其余字母小写的书写约定。对于缩写的双字母单词,要求全部大写。 例如:ApplicationExceptionID

匈牙利命名法 匈牙利命名法由匈牙利程序员发明,他在微软工作了多年,此命名法就是通过微软的各种产品和文档传出来。多数有经验的程序员,不管他们用的是哪门语言,都或多或少在使用它。 基本原则:变量名 = 属性 + 类型 + 对象描述 即一个变量名是由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。

3.注释

(1) 对较为复杂的SQL语句加上注释,说明算法、功能。注释风格:注释单独成行、放在语句前面。 (2) 应对不易理解的分支条件表达式加注释。 (3) 对重要的计算应说明其功能。 (4) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明。 (5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)。 (6) 可采用单行/多行注释。(-- 或 /**/)

A.代码头部注释 在SQL代码块(sql文件或存储过程)的头部进行注释,标注创建人(Author)、创始日期(Create date)、修改信息(Modify [n])。 格式: – ============================================= – Author: – Create date: – Description: – Modify [n]: < Modifier,Date, Description > – =============================================

注:日期格式使用 yyyy-MM-dd。Modify [n] n代表修改序号,从1开始,每次修改加1。

B.TRANSACTION注释 建议在每个事务的开头进行注释,说明该事务的功能。 – < Modifier,Date, Description > BEGIN TRANSACTION;

4.书写规则补充 SQL 语句要以分号;结尾SQL 语句不区分大小写 SQL 不区分关键字的大小写。例如,不管写成 SELECT 还是 select,解释都是一样的。表名和列名也是如此。虽然可以根据个人喜好选择大写还是小写(或大小写混杂),但为了理解起来更加容易,经常使用一下规则: 关键字大写数据库名、表名和列名等小写

3. 常数的书写方式是固定的:

SQL 语句中含有字符串的时候,需要像 ‘abc’ 这样,使用英文单引号’将字符串括起来,用来标识这是一个字符串 SQL 语句中含有日期的时候,同样需要使用英文单引号将其括起来。日期的格式有很多种(‘26 Jan 2010’ 或者’10/01/26’ 或者 '2020-01-26’等)在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成 1000 这样的数字即可PS: 列名、表名不是字符串,不能使用单引号。可以用倒引号 ` 把表名和列名括起来。 单词需要用半角空格或者换行来分隔: SQL 语句的单词之间必须使用半角空格(英文空格)或换行符来进行分隔。没有分隔的语句会发生错误,无法正常执行SQL 语句中的标点符号必须都是英文状态下的,即半角字;不能使用全角空格(中文空格)作为单词的分隔符,否则会发生错误,出现无法预期的结果。 SQL书写规范(详细) SQL语句中出现的所有表名、表别名、字段名、序列等数据库对象都应小写;SQL 语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写;SQL语句中出现的变量参数应采用Camel语法命名,并反映变量的实际意义;SQL语句中的表别名应简短明了,宜反映表名的实际意义;如果一行有多列并超过80个字符,基于列对齐原则,应采用下行缩进;缩进应为1个Tab或者4个字符;同层次的SQL语句缩进应保持一致(纵向对齐); //存储过程SQL文书写格式的正确示例 SELECT result.dealerCode, ROUND (SUM (result.submitsubletamountdlr + result.submitpartsamountdlr + result.submitlaboramountdlr) / COUNT (*), 2) as avg, DECODE (null, 'x', 'xx', 'CNY') FROM (SELECT twc.dealerCode, twc.submitsubletamountdlr, twc.submitpartsamountdlr, twc.submitlaboramountdlr FROM srv_twc_f twc WHERE (twc.origsubmittime >= TO_DATE ('Date Range(start)','yyyy/mm/dd') AND twc.origsubmittime = TO_DATE ('Date Range(start)', 'yyyy/mm/dd') AND history.origsubmittime 、


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3