SQL书写规范

合集下载

sql语句编写顺序

sql语句编写顺序

sql语句编写顺序
SQL语句编写顺序是指在编写SQL语句时,应该按照什么样的顺序来编写不同的语句部分。

这样可以提高SQL语句的效率和可读性,减少错误和调试时间。

下面是SQL语句编写的一般顺序:
1. SELECT语句部分:先指定需要查询的列,然后是FROM子句
指定要查询的表。

2. WHERE语句部分:根据需要添加WHERE子句来筛选需要的数据。

3. GROUP BY语句部分:如果需要对查询结果进行分组,则定义GROUP BY子句中的列。

4. HAVING语句部分:在GROUP BY子句中添加HAVING子句来筛选组。

5. ORDER BY语句部分:定义ORDER BY子句中的列,以按指定
顺序排序结果。

6. LIMIT语句部分:使用LIMIT子句限制结果集的大小。

7. 其他语句部分:添加其他需要的SQL语句,如JOIN、UNION 等。

在实际编写SQL语句时,可能不需要按照上述顺序完全编写。

根据具体情况,可以根据需要灵活调整。

但是,通常需要考虑查询性能和可读性,遵循一定的编写顺序可以提高SQL语句的效率和可维护性。

- 1 -。

sql规范

sql规范

sql规范SQL(Structured Query Language)是一种用于管理关系数据库的计算机语言。

虽然SQL是一种标准的语言,但是在实际应用中,不同的数据库管理系统可能会有一些差异。

为了提高代码的可读性和可维护性,制定了一些SQL规范。

下面是一个涵盖了SQL规范的大致指南,旨在帮助开发人员编写高质量的SQL代码。

1. 格式化代码:- 使用统一的缩进,通常是4个空格。

- 在代码中适当空格,使代码更易读。

- 使用大写字母或小写字母编写关键词,以提高可读性。

2. 使用明确的表别名:- 在SQL查询中,如果涉及多个表,为每个表使用明确的别名。

- 别名应该具有描述性,以便更好地理解查询意图。

3. 使用JOIN语句:- 避免使用传统的WHERE语句来连接表,而是使用JOIN语句。

- JOIN语句可以更清晰、更有效地表示表之间的关系。

4. 避免使用SELECT *:- 在查询中,尽可能明确地列出需要的列,而不是使用通配符*。

- 这样可以减少数据传输量,提高查询效率,并且使查询意图更加明确。

5. 避免使用子查询:- 子查询会增加查询的复杂性和执行时间。

- 尽量使用JOIN语句来代替子查询,以提高查询性能。

6. 使用合适的数据类型:- 在创建表时,选择适当的数据类型和长度。

- 这样可以减少存储空间的使用,并提高查询性能。

7. 对于NULL值的处理:- 在查询中,使用IS NULL或IS NOT NULL来测试NULL 值,而不是使用等号(=)。

- 这样可以更明确地表示查询的意图,并且使代码更易读。

8. 使用事务:- 当执行多个SQL操作时,将它们放在一个事务中。

- 这样可以确保数据的一致性,并提供可靠的回滚机制。

9. 编写注释:- 在代码中加入注释,解释SQL的意图和目的。

- 这样可以让其他开发人员更容易理解代码,并且在维护代码时更加方便。

10. 安全性考虑:- 在查询中,避免将用户输入直接插入SQL查询中,以免遭受SQL注入攻击。

SQL开发规范

SQL开发规范

SQL开发规范目录命名规则 (3)P ASCAL命名 (3)表名和字段 (3)存储过程 (3)视图 (3)其他 (3)设计规范 (4)规范约定 (4)字段规范 (4)使用规范 (4)查询语句 (4)数据修改 (4)综合使用 (4)命名规则Pascal命名1.每一个单词的第一个字母大写,例如:B ank N ame2.常用单词缩写三个字母以下字母都大写,例如:SP、PG3.常用单词缩写三个字母以上第一个字母大写,例如:Xml表名和字段1.使用英文单词或词组作为表名,不得使用汉语拼音2.如有必要,建立一个中英文对照字典3.用名词和名词短语作表名4.不使用复数,除非与数据库保留字冲突5.用Pascal 命名规则6.尽量谨慎地使用缩写7.尽量不要和关键字重合8.必要时,使用下划线分割单词示例ProductName存储过程命名规则为TableName_action或前缀_ActionName,作业调度使用Job前缀,action或ActionName为存储过程含义用动词或动词短语来命名1.使用常见的缩写,尽量不要和关键字重合2.适当的使用下划线分割过长的名称3.当操作依赖条件时,结尾使用By+条件4.过长的SQL语句需要手工折行示例:AdminUser_ins Job_Dowork视图视图的命名采用V_ViewName的格式,其中V_前缀表示视图,ViewName部分表示视图的含义。

1.使用英文单词或词组作为视图名,不得使用汉语拼音2.用名词和名词短语作视图名3.不使用复数,除非与数据库保留字冲突4.用Pascal 命名规则5.尽量谨慎地使用缩写6.尽量不要和关键字重合7.必要时,使用下划线分割单词视图正确的命名,例如:V_UserInfo其他1.使用英文单词或词组作为数据库对象名,不得使用汉语拼音2.用名词和名词短语作为名称,非必要情况下不添加前缀3.不使用复数,除非与数据库保留字冲突4.用Pascal 命名规则5.尽量谨慎地使用缩写6.尽量不要和关键字重合7.必要时,使用下划线分割单词设计规范规范约定遵守数据的设计规范3NF 规定1.表内的每一个值都只能被表达一次。

SQL书写规范

SQL书写规范

SQL编程规范一、sql书写规范:二、书写优化性能建议三、其他经验性规则一、sql书写规范:1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。

2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。

3、对较为复杂的sql语句加上注释,说明算法、功能。

注释风格:注释单独成行、放在语句前面。

(1) 应对不易理解的分支条件表达式加注释;(2) 对重要的计算应说明其功能;(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明;(4) 每条SQL语句均应有注释说明(表名、字段名)。

(5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)(6) 可采用单行/多行注释。

(-- 或/* */ 方式)4、SQL语句的缩进风格(1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进(2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。

5、多表连接时,使用表的别名来引用列。

6、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;如例(1)二、书写优化性能建议1、避免嵌套连接。

例如:A = B and B = C and C = D2、where条件中尽量减少使用常量比较,改用主机变量3、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。

4、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。

如必须使用排序操作,请遵循如下规则:(1) 排序尽量建立在有索引的列上。

(2) 如结果集不需唯一,使用union all代替union。

5、索引的使用。

(1) 尽量避免对索引列进行计算。

如对索引列计算较多,请提请系统管理员建立函数索引。

(2) 尽量注意比较值与索引列数据类型的一致性。

(3) 对于复合索引,SQL语句必须使用主索引列(4) 索引中,尽量避免使用NULL。

sql规范

sql规范

Sql规范一、数据库设计规范设计阶段可以说是系统性能的关键阶段1.1、数据库逻辑设计的规范化遵守数据的设计规范3NF 规定✧无重复的列要求表中的每一列只包含一个实例信息例如:员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。

✧表内的每一行都应该被唯一的标识(有唯一键)例如:员工信息表中加上了员工编号(UserId)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。

这个唯一属性列被称为主关键字或主键、主码。

✧表内不应该存储依赖于其他键的非键信息。

要求一个数据库表中不包含其他表中的非主键信息例如:一个部门信息表,其中每个部门有部门编号(DeptId)、部门名称、部门简介等信息。

那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。

如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。

1.2、合理的冗余没有冗余的数据库设计可以做到。

但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据例如:商品的基本表,如下所示“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。

但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。

1.3、字段规范字段是数据库最基本的单位,其设计对性能的影响是很大的➢一行记录必须表内唯一,表必须有主键➢用尽量少的存储空间来存数一个字段的数据.数据类型尽量小,这里的尽量小是指在满足可以预见的未来需求的前提下。

例如能用int的就不用char或者varchar能用nvarchar(20)就不用nvarchar(500)➢字段必须定义合适的数据类型,以减少使用过程中的数据类型转换例如日期类型应用datetime 禁止用nvarchar➢尽量不要允许NULL,除非必要,可以用默认值代替➢尽量少用TEXT和IMAGE,二进制字段的读写是比较慢的➢枚举类型的字段,需要有comment 中文注释例如用户表中的用户状态用1、2、需要注释1:正常、2:禁止1.4、索引规范在设计阶段,可以根据功能和性能的需求进行初步的索引设计,这里需要根据预计的数据量和查询来设计索引。

SQL编码规范

SQL编码规范

SQL编码规范1.书写格式  ⽰例代码: 存储过程SQL⽂书写格式例 select c.dealerCode, round(sum(c.submitSubletAmountDLR + c.submitPartsAmountDLR + c.submitLaborAmountDLR) / count(*), 2) as avg, decode(null, 'x', 'xx', 'CNY') from ( select a.dealerCode, a.submitSubletAmountDLR, a.submitPartsAmountDLR, a.submitLaborAmountDLR from SRV_TWC_F a where (to_char(a.ORIGSUBMITTIME, 'yyyy/mm/dd') >= 'Date Range(start)' and to_char(a.ORIGSUBMITTIME, 'yyyy/mm/dd') <= 'Date Range(end)' and nvl(a.deleteflag, '0') <> '1') union all select b.dealerCode, b.submitSubletAmountDLR, b.submitPartsAmountDLR, b.submitLaborAmountDLR from SRV_TWCHistory_F b where (to_char(b.ORIGSUBMITTIME, 'yyyy/mm/dd') >= 'Date Range(start)' and to_char(b.ORIGSUBMITTIME,'yyyy/mm/dd') <= 'Date Range(end)' and nvl(b.deleteflag,'0') <> '1') ) c group by c.dealerCode order by avg desc; C#中⾥的SQL字符串书写格式例 strSQL = "insert into Snd_FinanceHistory_Tb " + "(DEALERCODE, " + "REQUESTSEQUECE, " + "HANDLETIME, " + "JOBFLAG, " + "FRAMENO, " + "INMONEY, " + "REMAINMONEY, " + "DELETEFLAG, " + "UPDATECOUNT, " + "CREUSER, " + "CREDATE, " + "HONORCHECKNO, " + "SEQ) " + "values ('" + draftInputDetail.dealerCode + "', " + "'" + draftInputDetail.requestsequece + "', " + "sysdate, " + "'07', " + "'" + frameNO + "', " + requestMoney + ", " + remainMoney + ", " + "'0', " + "0, " + "'" + draftStruct.employeeCode + "', " + "sysdate, " + "'" + draftInputDetail.honorCheckNo + "', " + index + ")"; 1).缩进 对于C#⾥的SQL字符串,不可有缩进,即每⼀⾏字符串不可以空格开头 2).换⾏ 1>.Select/From/Where/Order by/Group by等⼦句必须另其⼀⾏写 2>.Select⼦句内容如果只有⼀项,与Select同⾏写 3>.Select⼦句内容如果多于⼀项,每⼀项单独占⼀⾏,在对应Select的基础上向右缩进8个空格(C#⽆缩进) 4>.From⼦句内容如果只有⼀项,与From同⾏写 5>.From⼦句内容如果多于⼀项,每⼀项单独占⼀⾏,在对应From的基础上向右缩进8个空格(C#⽆缩进) 6>.Where⼦句的条件如果有多项,每⼀个条件占⼀⾏,以AND开头,且⽆缩进 7>.(Update)Set⼦句内容每⼀项单独占⼀⾏,⽆缩进 8>.Insert⼦句内容每个表字段单独占⼀⾏,⽆缩进;values每⼀项单独占⼀⾏,⽆缩进 9>.SQL⽂中间不允许出现空⾏ 10>.C#⾥单引号必须跟所属的SQL⼦句处在同⼀⾏,连接符("+")必须在⾏⾸ 3).空格 1>.SQL内算数运算符、逻辑运算符连接的两个元素之间必须⽤空格分隔 2>.逗号之后必须接⼀个空格 3>.关键字、保留字和左括号之间必须有⼀个空格 2.不等于统⼀使⽤"<>"。

SQL及其规范

SQL及其规范

SQL及其规范SQL及其规范SQL(Structured Query Language结构化查询语⾔)是⼀种数据库查询语⾔和程序设计语⾔,主要⽤于管理数据库中的数据,如存取数据、查询数据、更新数据等。

SQL是专为数据库⽽建⽴的操作命令集,是⼀种功能齐全的数据库语⾔。

在使⽤它时,只需要发出"做什么"的命令,"怎么做"是不⽤使⽤者考虑的。

SQL功能强⼤、简单易学、使⽤⽅便,已经成为了数据库操作的基础,并且现在⼏乎所有的数据库均⽀持SQL。

<1> 在数据库系统中,SQL语句不区分⼤⼩写。

但字符串常量区分⼤⼩写。

建议命令⼤写,表名库名⼩写;<2> SQL语句可单⾏或多⾏书写,以";"结尾。

关键词不能跨多⾏或简写。

<3> ⽤空格和缩进来提⾼语句的可读性。

⼦句通常位于独⽴⾏,便于编辑,提⾼可读性。

SELECT * FROM tb_tableWHERE NAME="YUAN";<4> 注释:单⾏注释:--多⾏注释:/*......*/<5>SQL语句可以折⾏操作<6>SQL语⾔由DDL,DML,DQL和DCL组成(1)数据库定义语⾔(Data Definition Language,DDL)数据库定义语⾔主要⽤于定义数据库、表等,其中包括CREATE语句、ALTER语句和DROP语句。

CREATE语句⽤于创建数据库、数据表等,ALTER语句⽤于修改表的定义等,DROP语句⽤于删除数据库、删除表等。

(2)数据库操作语⾔(Data Mabipulation Language,DML)数据库操作语⾔主要⽤于数据库进⾏添加、修改、删除操作,其中包括INSERT语句、UPDATE语⾔和DELETE语句。

INSERT语句⽤于插⼊数据,UPDATE语句⽤于修改数据,DELETE语句⽤于删除数据。

sql语法规则

sql语法规则

sql语法规则
SQL语法规则是用来指导书写SQL语句的一系列规则和约定。

以下是一些常见的SQL语法规则:
1. 关键字和函数名不区分大小写,但是一般习惯使用大写字母表示关键字,小写字母表示表名和列名。

2. SQL语句以分号(;)结尾。

在一些数据库管理系统中可以
省略分号,但是建议在每个语句后面加上分号以增加可读性和可维护性。

3. 一个SQL语句可以跨越多行,并使用缩进或换行来增加可
读性。

4. 在表名和列名中可以使用字母、数字和下划线,但是不能以数字开头。

5. 字符串可以用单引号(')或双引号(")括起来。

在使用引
号时要注意匹配使用。

6. 注释可以用两个减号(--)或者斜杠星号(/* */)表示,可以
用于注释单行或多行代码。

7. SQL语句可以使用通配符来模糊匹配数据,常用的通配符
有百分号(%)和下划线(_)。

8. SQL语句的关键字一般包括SELECT、FROM、WHERE、GROUP BY、ORDER BY等等,这些关键字的顺序对于SQL
语句的执行有重要的影响。

9. SQL语句可以使用逻辑运算符(AND、OR、NOT)和比较
运算符(=、<、>、<=、>=、<>)来组合和过滤数据。

10. SQL语句可以使用函数来对数据进行计算、转换或聚合。

以上只是SQL语法规则的一部分,不同的数据库管理系统可
能会有些许差异,具体的规则还需要根据所使用的数据库来确定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL编程规范
一、sql书写规范:
二、书写优化性能建议
三、其他经验性规则
一、sql书写规范:
1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。

2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。

3、对较为复杂的sql语句加上注释,说明算法、功能。

注释风格:注释单独成行、放在语句前面。

(1) 应对不易理解的分支条件表达式加注释;
(2) 对重要的计算应说明其功能;
(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明;
(4) 每条SQL语句均应有注释说明(表名、字段名)。

(5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)
(6) 可采用单行/多行注释。

(-- 或/* */ 方式)
4、SQL语句的缩进风格
(1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进
(2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。

5、多表连接时,使用表的别名来引用列。

6、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;
如例(1)
二、书写优化性能建议
1、避免嵌套连接。

例如:A = B and B = C and C = D
2、where条件中尽量减少使用常量比较,改用主机变量
3、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。

4、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。

如必须使用排序操作,请遵循如下规则:
(1) 排序尽量建立在有索引的列上。

(2) 如结果集不需唯一,使用union all代替union。

5、索引的使用。

(1) 尽量避免对索引列进行计算。

如对索引列计算较多,请提请系统管理员建立函数索引。

(2) 尽量注意比较值与索引列数据类型的一致性。

(3) 对于复合索引,SQL语句必须使用主索引列
(4) 索引中,尽量避免使用NULL。

(5) 对于索引的比较,尽量避免使用NOT=(!=)
(6) 查询列和排序列与索引列次序保持一致
6、尽量避免相同语句由于书写格式的不同,而导致多次语法分析。

7、尽量使用共享的SQL语句。

8、查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面。

9、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。

10、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。

三、其他经验性规则
1、尽量少用嵌套查询。

如必须,请用not exist代替not in子句。

如例(2)
2、用多表连接代替EXISTS子句。

如例(3)
3、少用DISTINCT,用EXISTS代替如例(4)
4、使用UNION ALL、MINUS、INTERSECT提高性能
5、使用ROWID提高检索速度。

对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。

6、使用优化线索机制进行访问路径控制。

7、使用cursor时,显示光标优于隐式光标
本规范示例:
例一:
SELECT aka042 -- 单位缴费划入个人帐户比例
INTO prm_aaa043
FROM ka01 --医疗保险单位缴费划入个人帐户比例分段信息
WHERE akc021 = rec_kc01.akc021 -- 医疗人员类别
AND aka041 >= rec_kc01.akc023 -- 年龄上限
AND aka040 <= rec_kc01.akc023 -- 年龄下限
AND aae030 <= prm_date -- 开始时间
AND ( aae031 >= prm_date OR aae031 IS NULL ); -- 终止时间
例二:
X SELECT ......
FROM emp
WHERE dept_no NOT IN ( SELECT dept_no
FROM dept
WHERE dept_cat='A');
O SELECT ......
FROM emp e
WHERE NOT EXISTS ( SELECT 'X'
FROM dept
WHERE dept_no=e.dept_no
AND dept_cat='A');
例三:
X SELECT ......
FROM emp
WHERE EXISTS ( SELECT 'X'
FROM dept
WHERE dept_no=e.dept_no
AND dept_cat='A');
O SELECT ......
FROM emp e,dept d
WHERE e.dept_no=d.dept_no
AND dept_cat='A';
例四:
X SELECT DISTINCT d.dept_code,d.dept_name FROM dept d ,emp e
WHERE e.dept_code=d.dept_code;
O SELECT dept_code,dept_name
FROM dept d
WHERE EXISTS ( SELECT 'X'
FROM emp e
WHERE e.dept_code=d.dept_code);。

相关文档
最新文档