文档库 最新最全的文档下载
当前位置:文档库 › SQL编码规范

SQL编码规范

SQL编码规范
SQL编码规范

车联网技术SQL编码规范

1、严谨使用标量子查询(分页可以使用)

select (select ... from a where a.id=b.id) from b

2、不要使用INSERT INTO table VALUE(?,?,?,?,?)格式,要指出

具体要赋值的字段,INSERT的效率会有提高。

3、SELECT与FROM语句之间只定义返回的字段名,除非返回所

有的字段,尽量不要使用* ,字段提取要按照“需多少、提多

少”的原则(因为大批量数据的抽取会影响SQL缓存的效率)4、避免使用COUNT(*),因为COUNT(*)会对全字段做聚集,建

议使用COUNT (0)或COUNT(1)这样的查询语句,有主键ID,尽量使用count(id)

5、使用OR 会引起全表扫描,比较影响查询效率,尽可能少用或

不用,实在不行可以用UNION ALL代替。NULL的检索要回避

一下。

6、使用DISTINCT是为了保证在结果集中不出现重复值,但是

DISTINCT会产生一张工作表,并进行排序来删除重复记录,

这会大大增加查询和I/O的操作次数。因此应当避免使用

DISTINCT关键字

7、负逻辑如!=、<>、not in等,都会导致全表扫描来完成查询。

当表较大时,会严重影响系统性能,可以用别的操作来代替。

8、join 与on 必须严格匹配,不允许出现没有on的join

9、Where 子句中的连接顺序:数据库采用自下而上的顺序解析

where子句,根据这个原理,表之间的连接必须写在其他where 条件之前,那些可以过滤掉大量记录的条件必须写在where子句的末尾。如:

低效:select * from emp e where sal>5000 and job = ‘manager’ and 25< (select count (*)from emp where mgr=e.empno);

高效:select * from emp e where 25<(select count(*) from emp where mgr=e.empno) and sal>5000 and job=’manager’;

10、在使用UNION或UNION ALL 的前后的两个SQL需要加( )。

11、避免使用IN和NOT IN ,使用EXIST和NOT EXIST代替。

12、将计算从等号左边移到右边,例如:把a*2>4改为a>4/2;把TO_CHAR(zip) = ‘94002’ 改为zip = TO_NUMBER('94002')。

13、不要使用NOT,如Goods_no != 2,要改为: where Goods_no>2 or Goods_no<2

14、不要使用is null , 如WHERE DEPT_CODE IS NOT NULL 要改为: WHERE DEPT_CODE >=0;

15、尽量把循环的操作封装到SQL写的存储过程里,因为存储过程都在服务端执行,所以没有数据往返的消耗。有机会,将一些查询封装到函数里,而在普通SQL里使用这些函数,同样是很有效的优化。

16、索引列上>= 代替> 如:

高效:select * from emp where deptno >=4

低效:select * from emp wher e deptno > 3

17、防SQL注入:对于用户交互的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 = 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子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。

SQL编码规范

车联网技术SQL编码规范 1、严谨使用标量子查询(分页可以使用) select (select ... from a where a.id=b.id) from b 2、不要使用INSERT INTO table VALUE(?,?,?,?,?)格式,要指出 具体要赋值的字段,INSERT的效率会有提高。 3、SELECT与FROM语句之间只定义返回的字段名,除非返回所 有的字段,尽量不要使用* ,字段提取要按照“需多少、提多 少”的原则(因为大批量数据的抽取会影响SQL缓存的效率)4、避免使用COUNT(*),因为COUNT(*)会对全字段做聚集,建 议使用COUNT (0)或COUNT(1)这样的查询语句,有主键ID,尽量使用count(id) 5、使用OR 会引起全表扫描,比较影响查询效率,尽可能少用或 不用,实在不行可以用UNION ALL代替。NULL的检索要回避 一下。 6、使用DISTINCT是为了保证在结果集中不出现重复值,但是 DISTINCT会产生一张工作表,并进行排序来删除重复记录, 这会大大增加查询和I/O的操作次数。因此应当避免使用 DISTINCT关键字 7、负逻辑如!=、<>、not in等,都会导致全表扫描来完成查询。 当表较大时,会严重影响系统性能,可以用别的操作来代替。 8、join 与on 必须严格匹配,不允许出现没有on的join 9、Where 子句中的连接顺序:数据库采用自下而上的顺序解析

where子句,根据这个原理,表之间的连接必须写在其他where 条件之前,那些可以过滤掉大量记录的条件必须写在where子句的末尾。如: 低效:select * from emp e where sal>5000 and job = ‘manager’ and 25< (select count (*)from emp where mgr=e.empno); 高效:select * from emp e where 25<(select count(*) from emp where mgr=e.empno) and sal>5000 and job=’manager’; 10、在使用UNION或UNION ALL 的前后的两个SQL需要加( )。 11、避免使用IN和NOT IN ,使用EXIST和NOT EXIST代替。 12、将计算从等号左边移到右边,例如:把a*2>4改为a>4/2;把TO_CHAR(zip) = ‘94002’ 改为zip = TO_NUMBER('94002')。 13、不要使用NOT,如Goods_no != 2,要改为: where Goods_no>2 or Goods_no<2 14、不要使用is null , 如WHERE DEPT_CODE IS NOT NULL 要改为: WHERE DEPT_CODE >=0; 15、尽量把循环的操作封装到SQL写的存储过程里,因为存储过程都在服务端执行,所以没有数据往返的消耗。有机会,将一些查询封装到函数里,而在普通SQL里使用这些函数,同样是很有效的优化。 16、索引列上>= 代替> 如: 高效:select * from emp where deptno >=4

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开发规范

目录 命名规则 (3) P ASCAL命名 (3) 表名和字段 (3) 存储过程 (3) 视图 (3) 其他 (3) 设计规范 (4) 规范约定 (4) 字段规范 (4) 使用规范 (4) 查询语句 (4) 数据修改 (4) 综合使用 (4)

命名规则 Pascal命名 1.每一个单词的第一个字母大写,例如:B ank N ame 2.常用单词缩写三个字母以下字母都大写,例如:SP、PG 3.常用单词缩写三个字母以上第一个字母大写,例如: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.使用英文单词或词组作为数据库对象名,不得使用汉语拼音

SQLServer数据库设计命名规范

SQLServer数据库设计规范 1 相关的设计规范 1.1 采用有意义的字段名 尽可能地把字段描述的清楚些。当然,也别做过头了,比如CustomerShippingAddressStreetLine1 虽然很富有说明性,但没人愿意键入这么长的名字,具体尺度就在你的把握中。每个单词的首个字母要求用大写!!!不要用下划线来连接每个单词。 1.2 遵守3NF 标准3NF 规定: A.表内的每一个值都只能被表达一次。 B.表内的每一行都应该被唯一的标识(有唯一键)。 C.表内不应该存储依赖于其他键的非键信息。 1.3 小心保留词 要保证你的字段名没有保留词、数据库系统或者常用访问方法冲突,比如,写的一个ODBC 连接程序里有个表,其中就用了DESC 作为说明字段名。后果可想而知!DESC 是DESCENDING 缩写后的保留词。表里的一个SELECT *语句倒是能用,但我得到的却是一大堆毫无用处的信息。 1.4 保持字段名和类型的一致性 在命名字段并为其指定数据类型的时候一定要保证一致性。假如字段在某个表中叫做“AgreeMentNumber”,你就别在另一个表里把名字改成“ref1”。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。记住,你干完自己的活了,其他人还要用你的数据库呢。

2 命名规则: 2.1 数据库(Database)的定义 数据库名称= 数据库内容标识(首字大写) 2.2 表(Table)的定义 命名应尽量反映存储的数据内容。 表名前缀:以该表及与该表相关联的一系列表的内容而得到一个代表统一的标识 表名称= 表名前缀+ 表内容标识(首字大写) 如ClientInfo相关联的一系的表以ci作为前缀, 即有表名:ciHistory,ciContact,ciBusiness 2.3 字段(Field)的定义 字段是数据库中的用途最广泛的,它的类型非常多,所以必须加类型前缀来标示它的类型。 字段名称= 字段类型前缀+ 字段内容标识(首字大写) 2.4 视图名 视图的名称= "vw" + 视图内容标识(首字大写) 如vUserPerm 2.5 触发器名 触发类型触发标识 ----------------------------------- Insert i Delete d Update u

SQL编写规范分解

湖北电信经营分析与决策支持系统项目 SQL编写规范 2007年3月 本文档及其所含信息为机密材料 并且由湖北电信和NCR共同拥有 本文档中的任何部分都不得以任何手段任何形式进行复制与传播未经湖北电信和NCR书面授权,不得将材料泄露给第三方Copyright ? 2007 Hubei Telecom & NCR版权 保留所有的权利

文档控制文件准备资料 HBDX意见 客户签收

目录 1前言 (2) 1.1边界定义 (2) 1.2原则定义 (2) 2格式编排约定 (3) 2.1基本要求 (3) 2.2编写规范 (3) 2.2.1字段排列要求 (3) 2.2.2字段分割符’,’点书写位置要求 (3) 2.2.3字段别名‘AS’ 语句编写要求 (3) 2.2.4SELECT子句排列要求 (4) 2.2.5运算符前后间隔要求 (4) 2.2.6CASE语句的编写 (4) 2.2.7子查询嵌套编写规范 (5) 2.2.8表别名定义约定 (5) 2.2.9变量引用 (6) 3语法及数据操作约定 (6) 3.1JOIN操作语法要求 (6) 3.2INSERT语句编写规范 (7) 3.3DELETE语句编写规范 (8) 3.4NULL值处理约定 (8) 3.4.1数字型字段NULL值的处理 (8) 3.4.2字符型字段NULL值的处理 (8) 3.4.3提取日期型字段的处理 (8) 3.5除法运算被0除的处理 (8) 3.6比较逻辑运算处理约定 (9) 3.6.1字符型比较的处理 (9) 3.6.2日期型比较的处理 (9) 3.7注释约定 (9) 3.8其它 (10) 4常用Teradata SQL知识介绍 (10) 4.1NOT IN与MINUS (10) 4.2取字符串长度 (11) 4.3多表连接中的条件限制(WHERE AND ON) (11)

SQLserver数据库设计及开发规范

LMS项目数据库设计 及使用规

在本项目中,数据库的设计和使用必须遵循以下原则: 1命名原则 1.1约定: Pascal Casing命名方式: 1.每一个单词的第一个字母大写,例如:B ank N ame。 2.常用单词缩写三个字母以下字母都大写,例如:SP、PG 3.常用单词缩写三个字母以上第一个字母大写,例如:Xml 1.2表名和字段 规则如下: ?使用英文单词或词组作为表名,不得使用汉语拼音,建立一个中英文对照字典。 ?用名词和名词短语作表名 ?不使用复数,除非与数据库保留字冲突 ?用Pascal 命名规则 ?尽量谨慎地使用缩写 ?尽量不要和关键字重合 ?不要用任何名前缀(例如U,B) ?数据库对象名称不使用下划线 正确的命名,例如: Users Order Product 1.3存储过程 规则如下: 命名规则为up_xxx_StoredProcedureName,up表示User Procedure,用来区分它和系统存储过程,xxx表示子系统的名称,由三个字母构成,各个子系统参见下表,StoredProcedureName为存储过程含义 StoredProcedureName规则如下: ?用动词或动词短语来命名,并带有宾语 ?需要符合用Pascal 命名规则。 ?尽量谨慎地使用缩写 ?尽量不要和关键字重合

?不要用任何名前缀(例如U,B) ?StoredProcedureName不使用下划线 ?当操作依赖条件时,一般结尾使用By+条件 存储过程正确的命名,例如: Up_Usr_InsertUser Up_Usr_SearchUserByUserID Up_Usr_DeleteUserByUserID 各个子系统的缩写如下: 1.4视图 规则如下: ?视图的命名采用vw ViewName的格式,其中vw前缀表示视图,ViewName部分表示视图的含义。 ViewName规则如下: ?用名词和名词短语, ?不使用复数 ?用Pascal 命名规则 ?尽量谨慎地使用缩写 ?尽量不要和关键字重合 ?不要用任何名前缀(例如U,B) ?ViewName中不使用下划线 视图正确的命名,例如: vwUser vwUserOrder vwTranscation 视图错误的命名,例如: UserView vw_Transcation_View

SQL Server数据库规范

数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求。数据库设计过程中命名规范很是重要,命名规范合理的设计能够省去开发人员很多时间去区别数据库实体。 最近也因为工作需要所以整理出了这个word文档,望大家指正。 2数据库设计 数据库规划→需求分析→数据库设计→应用程序设计→实现→测试→运行于维护 2.1数据库规划 定义数据库应用系统的主要目标,定义系统特定任务,包括工作量的估计、使用资源、和需求经费,定义系统的范围以及边界。 2.2需求分析 2.1.1需求分析步骤与成果 涉及人员:用户和分析人员 任务:对现实世界要处理的对象进行详细的调查,收集基础数据及处理方法,在用户调查的基础上通过分析,逐步明确用户对系统的需求,包括信息的要求及处理的要求。 方法与步骤:1.通过与用户的调查,对用户的信息需求进行收集。 2.在收集数据的同时,设计人员要对其进行加工和整理,以数据字典和数据流图的形式描述出来,并以设计人员的角度向用户讲述信息,根据用户的反馈加以修改并确定(该过程是反复的过程) 成果:数据流图,数据字典,各种说明性表格,统计输出表以及系统功能结构图。 2.1.2数据流图基本元素与数据流图 外部实体:存在于软件系统之外的人员或组织(正方形或立方体表示)。 加工:数据处理,表示输入数据在此进行变换,产生输出数据(圆角巨型或圆形表示)。数据流:表示流动着的数据(箭头线表示)。 数据存储:用来表示要存储的数据(开门矩形或两条平行横线表示)。 订单处理系统顶层流程图:

0层数据流图:

sql语句书写规范

竭诚为您提供优质文档/双击可除 sql语句书写规范 篇一:标准sql语句的写法 有次面试非得让我写3表连接查询的标准sql语句,可是我不知道,我们一般都是直接写而不考虑是否遵循标准,能用即可的。所以检查了一下。 具体的如下: (https://www.wendangku.net/doc/163390417.html,/u/22313/showart.phpid=21 4419) 一、简单查询 简单的transact-sql查询只包括选择列表、FRom子句和wheRe子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段。 selectnickname,email FRomtesttable wheRename=张三 (一)选择列表

选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: select* FRomtesttable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。例如: selectnickname,email FRomtesttable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:select昵称=nickname,电子邮件=email FRomtesttable 4、删除重复行 select语句中使用all或distinct选项来显示表中符

SQL语句编写与优化规范

SQL语句编写与优化规范 1用SELECT查询用具体字段代替“*”,且尽可能只查询需要的字段。 SELECT * FROM DEMO_TABLE; SELECT FIELD1,FILED2 FROM DEMO_TABLE; 2多表查询时,使用表的别名,就可以减少解析的时间并减少那些由列名歧义引起的语法错误 SELECT FIELD1,FILED2 FROMDEMO_TABLE1,DEMO_TABLE2 WHERE T1_ID=T2_ID; SELECT t1.T1_ID=t2.T2_ID; 3用EXISTS替代IN,用NOT EXISTS替代NOT IN SELECT * FROM EMP ( FROM DEPT WHERE LOC = 'MELB'); SELECT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = 'MELB') 4WHERE条件连接顺序,把表关系写在最前 例如Oracle采用自下而上的顺序解析WHERE子句,表之间的条件连接必须写在其他条件之前,把可以过滤掉大量数据的条件写在WHERE子句的最后,按照过滤记录数量的多少 SELECT * FROM A a, B b WHERE a.num>3000 and b.state=2 AND a.ID=b.ID; SELECT * FROM A a, B b WHERE a.ID=b.ID and b.state=2and a.num>3000 5删除全表时,用TRUNCATE替代DELETE 当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.

MySQL数据库设计SQL规范

MySQL数据库设计SQL规范 1 命名规范 1、库名、表名、字段名必须使用小写字母并采用下划线分割; 2、库名、表名、字段名支持最多32个字符,易于辨识以及减少传输量不要超过32; 3、库名、表名、字段名禁止使用MySQL保留关键字; 4、临时库、临时表名必须以tmp为前缀并以日期为后缀; 5、备份库、备份表名必须以bak为前缀并以日期为后缀; ---------------------------------------------------------------- 2 基本规范 1、使用INNODB存储引擎 5.5以后的默认引擘,支持事务,行级锁,更好的恢复性,高并发下性能更好,对多核,大内存,ssd等硬件支持更好; 2、表字符集使用UTF8 使用utf8字符集,如果是汉字,占3个字节,但ASCII码字符还是1个字节;统一,不会有转换产生乱码风险; 3、所有表都需要添加注释; 4、不在数据库中存储图片、文件等大数据; 5、禁止在线上做数据库压力测试; 6、禁止从测试、开发环境直连线上数据库; ----------------------------------------------------------------- 3 库表设计规范 1、尽量避免使用分区表 MySQL的分区表实际性能不是很好。 2、拆分大字段和访问频率低的字段,分离冷热数据 3、采用合理的分库分表策略,推荐使用HASH进行分表,表名后缀使用十进制数,下标从0开始 首次分表尽量多的分,避免二次分表,二次分表的难度和成本较高 4、按日期时间分表需符合YYYY[MM][DD][HH]格式 5、单表字段数控制在20个以内 6、一条完整的建表语句中应包含必要的字段、主键、合理的索引(综合代码中所有的条件语句创建合理的索引,主键必须要有) ------------------------------------------------------------------- 4 索引设计规范 索引是一把双刃剑,它可以提高查询效率但也会降低插入和更新的速度并占用磁盘空间 1、单张表中索引数量不超过5个; 2、单个索引中的字段数不超过5个;

SQL编写规范

SQL编写规范

**公司ERP组SQL编写规范 Author by DB小组

1.写SQL注意事项 1.1书写规范: 1)S QL语句大小写: 所有数据库关键字和保留字 均使用大写 2)不允许把多个语句写在一行中,一行只写一 条语句 3)避免将复杂的SQL 语句写到同一行,建议要 在关键字和谓词处换行 4)相对独立的程序块之间必须加空行。 5)I NSERT语句中必须指定字段列表,防止表结 构变化导致的错误 1.2命名规范: 1)不要使用数据库关键字和保留字创建对象名 (如select 等) 2)命名中不要使用中文和特殊字符,下划线可以 使用. 3)严禁使用空格给表和字段来命名 4)创建对象时,对象名注意不要加双引号 5)对象名称不要超过30个字符 6)变量命名规定如下:

i.函数或过程中所接收变量名称以P_开头,如 create proc aaa(P_branchid in varchar2) ii.过程中所定义变量以V_开头,如declare v_branchid varchar2(3) 7)E RP数据库对象命名必须加前缀以标识对象类 型,规范如下: 表(table)tb_ 视图(view) vw_ ` 序列(sequence) seq_ 簇(cluster) c_ 触发器(trigger) trg_ 存储过程(procedure) sp_ 函数(function) fun_ 物化视图(materialized view) mv_ 包和包体(package & package body) pkg_ 类和类体(type & type body) typ_ 主键(primary key) pk_ 外键(foreign key) fk_ 唯一索引(unique index) uk_ 普通索引(normal index) ix_ 位图索引(bitmap index) bi_ 同义词(synonym)依据所分配的表所属模块 数据库链接(database link)根据所连接服务器特点指定名称 1.3注释规范: 1)在一般情况下,源程序有效注释量必须在30% 左右,注释不宜太多也不能太少,注释语言需 准确、易懂、简洁、精炼。 2)尽量使用中文进行注释,对内容描述应该准确 完整 3)避免在一行代码中间或表达式中间加入注释

sql语句书写规范

sql语句书写规范 篇一:标准Sql语句的写法 有次面试非得让我写3表连接查询的标准SQL语句,可是我不知道,我们一般都是直接写而不考虑是否遵循标准,能用即可的。所以检查了一下。 具体的如下:(22313/?id=214419) 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段。 SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变

量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT 昵称=nickname,电子邮件=email

FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 * FROM testtable SELECT TOP 20 PERCENT * FROM testtable (二)FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之

编程规范(T-SQL)

技术文件 技术文件名称:编码规范-TSQL 技术文件编号:TECH-0002 版本:V0.1 共14 页 (包括封面) 拟制 审核 会签 标准化 批准 互动时代科技有限公司技术部

1. 概述 1.1. 基本原则 以大小写敏感编写SQL语句。 尽量使用Unicode 数据类型。 优先使用连接代替子查询或嵌套查询。 尽量使用参数化SQL查询代替语句拼接SQL查询。 禁止使用[拼音]+[英语]的方式来命名SQL对象或变量。 尽量使用存储过程代替SQL语句。 1.2. 基本规范 建议采用Pascal样式或Camel样式命名数据库对象。 大写T-SQL语言的所有关键字,谓词和系统函数。 2. 命名规范 在一般情况下,采用Pascal样式或Camel样式命名数据库对象,使在开发基于数据库应用程序的时候通过ORM工具生成的数据访问代码不需要调整就符合程序开发语言(比如C #)命名规范。另外,关系型数据库同Xml结合得越来越紧密,规范的命名越来越重要。 在实际数据库开发过程中,如果需求方已经提供数据库设计方案,建议以提供的方案为准;在原有数据库上进行升级开发时,在可行的情况下可适当做出设计调整以符合编程规范。 1.3. 对象命名 1.3.1. 数据库 第一种方式,采用Pascal样式命名,命名格式为[项目英文名称]。 示例:AdventureWorks 第二种方式,采用Pascal样式命名,命名格式为[项目英文名称] + Db。 示例:AdventureWorksDb BizTalkRuleEngineDb 建议采用第一种方式。 1.3. 2. 数据库文件 数据文件:[数据库名称] + _Data.mdf 日志文件:[数据库名称] + _Log.ldf

SQL_Server数据库设计规范-模板

XXXXXX物料拉动项目数据库设计开发规范 2020年9月

1范围 (4) 2总体要求 (4) 2.1数据库设计总体要求 (4) 2.2数据库对象命名的总体要求 (4) 2.3数据库程序编码的总体要求 (5) 3数据库设计规范 (5) 3.1数据库的概念设计 (5) 3.2数据库的逻辑设计 (6) 3.3数据库物理设计 (6) 4数据库对象命名规范 (7) 4.1.1数据表模块分类 (8) 4.1.2数据表命名方法 (9) 4.1.3数据表属性设计 (9) 5数据字典编写格式规范 (10) 5.1数据库表汇总表格式 (10) 5.2数据库表详述表格式 (10) 5.3编码数据表格式 (11) 6数据开发规范 (13) 6.1数据库脚本的目录结构 (13) 6.2数据库脚本的开发规范 (14) 6.2.1代码书写规范 (14) 6.2.2存储过程编写规范 (17) 7数据库脚本的部署规范 (21) 8数据库开发过程中要避免的问题(CHECKLIST) (21) 8.1数据库设计 (21) 8.2SQL编写 (21) 8.3索引的使用 (22) 8.4TEMPDB的使用规范 (22)

1范围 本规范规定了XXXXXX物料拉动项目数据库建设的规则,是检验评定软件开发者为XXXXXX物料拉动开发的应用系统质量的标准尺度。本规范适用于各软件开发者和有关单位为本项目开发的应用系统所使用的数据库,数据库的设计、数据库内的对象命名、数据字典文档的编写必须遵守本规范。 2总体要求 数据库建设规范主要包括数据库设计规范、数据库对象命名规则和数据库程序开发编码规范、数据字典文档编写格式等内容。 2.1 数据库设计总体要求 数据库是信息化建设的重要基础。数据库设计通常是作为应用系统开发的一部分进行的,但在应用系统开发中数据库设计具有特殊的重要性和相对独立性,因此在本规范中专门进行规定。 开发者在系统设计阶段,应采用合理的设计方法进行数据库设计,建立数据库的逻辑模型和物理模型,最终设计出高性能、易扩展、易维护、少冗余、高安全性、高可靠性、一致性和完整性好的数据库。 在数据库设计完成后,开发者应提交《数据库设计报告》。 在软件鉴定验收时,开发者应提交完整的《数据库设计报告》、《数据字典》和在开发过程中发生的变更记录。 2.2 数据库对象命名的总体要求 数据库对象如表、存储过程等的名称一般根据对象的类别、所在的系统代号和自定义代号来确定,但对各类对象的命名有其特定要求,具体的各种对象的命名要求请见本规范命名规范部分。

SQL代码编写指导规范

SQL代码编写指导规范Array SQL代码编写指导规范

目录 1 简介 (2) 1.1 目标 (2) 1.2 范围 (2) 1.3 基本依据 (2) 1.4 使用约定 (2) 1.4.1 规则 (2) 1.4.2 建议 (2) 1.5 术语和缩略语 (2) 1.6 参考 (3) 2 通用规则 (3) 3 配置约定 (3) 4 格式约定 (3) 5 命名约定 (4) 5.1 一般规则 (4) 5.2 命名规则 (4) 5.3 常用规则 (5) 5.4 约定规则 (6) 5.4.1 表名采用前缀+表名的方式,前缀定义如下: (6) 6 注释 (7) 6.1 SQL代码注释 (7) 6.2 对象注释 (7) 7 嵌入式代码 (8)

1 简介 开发小组在进行SQL 编程时常常会忽略所谓的编码标准,但这些标准却是开发小组顺利开展工作的关键工具。这里介绍的编码标准是经整理出来的开发成果。它们当然还没有得到普遍接受,而且不可否认,有些标准带有主观色彩。整理出此规范实际上更多的是为了提高大家的意识,而不是吹捧每个人是SQL 编写方面的仲裁者:最重要的是要建立某些合理的编码标准并遵循这些标准。您在这篇文章中会发现有关SQL 编程的一系列不同的编码标准、技巧和提示。它们并未以任何特定的优先级或重要性顺序列出。 1.1 目标 本主题提供SQL编程语言的命名指南。希望能对下述情况有积极的作用: 避免Errors/Bugs ,特别是难以查询的Errors/Bugs 规范不良的编码习惯 提高程序的可读性、可维护性和可移值性 1.2 范围 规范只针对SQL Server数据库中的SQL编程语言。 1.3 基本依据 本文档主要依据一位具有超过25 年经验的数据库管理员和应用程序开发员Brian Walker 提出的开发成果。 同时也可参考MSDN文档中相应的规范。 1.4 使用约定 1.4.1 规则 本文档表明没有特别的理由必须要遵守的要求。违反规则的编码人员必须至少同有经验的同事商量并取得违反规则的理由共识后才能实施。必须对违反规则的代码进行注解。 1.4.2 建议 正常情况下优先考虑,如果有违反建议的编码,应该同有经验的同事商量并取得违反建议的理由共识后才能实施,推荐对违反建议的代码进行注解。 1.5 术语和缩略语 如下表所示:

SQL_Server开发通用规范

文件编号: 文件版次: SQL开发规范 东软集团股份有限公司

修改记录

1.1目的 规范sql的编写格式,提高SQL语句的可读性,共享性和执行效率。 1.2使用范围 所有需要与数据库交互的应用系统。 1.3概述 大部分业务系统需要与数据库进行交互,与数据库交互的主要方式就是SQL 语句,编写规范的SQL语句不但利于阅读,而且被数据库重复使用的几率也较大,执行效率相对较高,编写的好的SQL与编写的差的SQL在执行性能上可能会差几倍甚至几千几万倍,因此养成好的SQL 编写规范对于提高项目质量及提高开发人员自身素质有着潜在的极大的影响。 1.4书写 SQL书写遵守如下规范: 在同一个项目中,为了最大限度实现SQL的共享,要求书写sql语句时大小写要一 致,为了阅读方便和统一起见,所有SQL语句全部小写(如SQL!词,字段名,表名 等),常量除外,常量可以按需要书写。 举例:下面两个相同的语句除常量外都要统一起来。 1)select n ame from emp; 2)select ‘ NAME from emp where emp_no= ' QD001 SQL语句尽可能放在一行,若SQL太长放在一行中影响阅读时可分多行,但要保持缩 进一致,缩进可用TAB或者空格,但TAB数和空格数最好一致。 SQL语句中,各谓词之间以空格分割的,尽量保持空格数量一致,即若用一个空格分 割,则全部都用一个空格分割,便于数据库能够共享。 能使用绑定变量的,尽量使用绑定变量,尤其是在前台程序中? 对下面列出的情况,慎重使用绑定变量: 1)列值倾斜严重,如:某一状态列大部分值是‘1',只有极少数值 为’2',这种情况不宜用绑定变量,而应该用常量,便于数据库使 用柱状图统计信息 2) 日期时间列。

依据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; Java source里的SQL字符串书写格式例 strSQL = "insert into Snd_FinanceHistory_Tb " + "(DEALERCODE, " + "REQUESTSEQUECE, " + "HANDLETIME, "

SQL 书写规范

SQL 书写规范 1 SQL书写规范 (2) 1.1 选择最有效率的表名顺序(只在基于规则的优化器中有效) (2) 1.2 where子句中的连接顺序 (3) 1.3 @Select子句中避免使用'*' (3) 1.4 减少访问数据库的次数 (4) 1.5 使用decode函数来减少处理时间 (4) 1.6 用where子句替换having子句 (5) 1.7 减少对表的查询 (6) 1.8 使用表的别名(alias) (7) 1.9 @用exists替代in (7) 1.10 @用not exists替代not in (7) 1.11 @用表连接替换exists (8) 1.12 @用exists替换distinct (9) 1.13 @使用union-all和union (9) 1.14 用索引提高效率 (10) 1.14.1 索引的操作 (10) 1.14.2 建立索引 (12) 1.14.3 索引失效: (12) 1.14.3.1 IN、OR子句常会使用工作表,使索引失效。 (12) 1.14.3.2 使用IS NULL 或IS NOT NULL (13) 1.14.3.3 @条件字段使用函数和表达式 (13) 1.14.3.4 @比较不匹配的数据类型 (14) 1.14.3.5 带通配符(%)的like语句 (14) 1.14.3.6 Order by语句 (14) 1.14.3.7 > 及< 操作符(大于或小于操作符) (15)

数据库的优化通常可以通过对网络、硬件、操作系统、数据库参数和应用程序的优化来进行。最常见的优化手段就是对硬件的升级。根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右,其余的60%系统性能提升来自对应用程序的优化。许多优化专家认为,对应用程序的优化可以得到80%的系统性能的提升。因此,在此整理一些SQL书写规范,以期通过优化SQL达到提升系统性能的目的。 1SQL书写规范 1.1 选择最有效率的表名顺序(只在基于规则的优化器中有 效) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FRO M子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句 中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二 个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并. 例如: 表 TAB1 16,384 条记录 表 TAB2 1 条记录 选择TAB2作为基础表 (最好的方法) select count(*) from tab1,tab2 执行时间0.96秒 选择TAB1作为基础表 (不佳的方法) select count(*) from tab2,tab1 执行时间26.09秒 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 例如: EMP表描述了LOCATION表和CATEGORY表的交集. SELECT * FROM LOCATION L ,

相关文档