SQL代码编写指导规范
数据库开发规范(SQL_SERVER篇)
![数据库开发规范(SQL_SERVER篇)](https://img.taocdn.com/s3/m/e337a0f8d05abe23482fb4daa58da0116c171f86.png)
数据库开发规范(SQL_SERVER篇)数据库开发规范(SQL SERVER篇)目录第一章命名规范 (4)1.命名标志法 (4)2.数据库命名 (4)3.数据库月份库、数据表日分库命名规则 (4)4.分段数据库分库命名规则 (4)5.分段分日期数据库分库命名规则 (4)6.表的命名 (5)7.字段命名 (5)8.存储过程命名 (5)9.触发器命名, (6)10.索引命名 (6)11.主键 (6)12.外键 (6)13.缺省值 (6)15.函数的命名 (6)16.其他数据库对象命名规则 (6)17.其他数据库可编程性对象命名 (6)18.数据库保留字 (6)19.禁止使用空格 (6)第二章常用数据类型 (7)第三章数据库设计规范 (9)1.三范式 (9)2.适当的冗余 (9)3.主键 (9)4.索引 (9)5.主键与聚集索引的关系 (10)第四章存储过程编写规范 (11)1.注释 (11)2.书写规范 (12)3.性能相关 (12)4.尽量使用索引 (13)5.事务和锁 (14)6.其他注意事项 (14)7.注意临时表和表变量的用法 (14)8.注意子查询的用法 (14)9.常用写法 (16)9.1. XML解析 (16)9.2.检查表是否有数据 (16)9.3.检查变量是否为空或为’’ (16)9.4.动态SQL (16)9.5.建表 (17)9.6.建索引 (17)9.7.建用户 (17)9.8.建全文索引 (17)9.9.建链接服务器 (18)9.10. SERVICE BROKER (18)9.11.分区 (19)第一章命名规范1. 命名标志法使用下面的三种大写标识符约定。
Pascal 大小写将标识符的首字母和后面连接的每个单词的首字母都大写。
可以对三字符或更多字符的标识符使用Pascal 大小写。
例如:BackColorCamel 大小写标识符的首字母小写,而每个后面连接的单词的首字母都大写。
sql规范
![sql规范](https://img.taocdn.com/s3/m/56efb3122bf90242a8956bec0975f46526d3a770.png)
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编程思路](https://img.taocdn.com/s3/m/cc48da21f02d2af90242a8956bec0975f465a4b7.png)
sql编程思路
1.确定目标:在开始编写代码之前,要明确自己的目标是什么。
例如,要查询哪些数据,要如何对数据进行修改等。
2. 设计数据库结构:在进行SQL编程之前,要先设计好数据库的结构。
这包括表的设计、字段的设计、索引的设计等。
3. 理解SQL语法:在编写SQL代码时,要清楚各种SQL语句的语法和用法。
这包括SELECT、UPDATE、DELETE、INSERT等语句。
4. 编写优化的SQL代码:为了提高SQL执行效率,要编写优化的SQL代码。
这包括使用索引、避免使用子查询等优化技巧。
5. 进行错误处理:在SQL编程中,经常会出现各种错误。
为了保证程序的稳定性,要进行错误处理。
这包括捕获异常、记录日志等。
6. 测试和调试:在完成SQL编程之后,要进行测试和调试。
这包括对程序进行单元测试、集成测试等,确保代码的正确性和可靠性。
7. 总结经验:在进行SQL编程的过程中,要总结经验并不断改进自己的编程思路。
这可以帮助提高编程效率和代码质量。
- 1 -。
sql语言的标准
![sql语言的标准](https://img.taocdn.com/s3/m/2b66b7903086bceb19e8b8f67c1cfad6195fe9b8.png)
sql语言的标准一、概述SQL(StructuredQueryLanguage)是一种用于管理关系数据库系统的标准语言。
它被广泛用于各种数据库管理系统,如MySQL、Oracle、SQLServer等。
本标准旨在规范SQL语言的使用和行为,以确保在不同的数据库管理系统之间的一致性和互操作性。
二、语法规则1.语句结构:SQL语句通常以一个或多个关键字开头,后面跟着表名、列名、条件、操作符和值等元素。
语句以分号结尾。
2.关键字:SQL关键字用于指定操作类型,如SELECT、INSERT、UPDATE、DELETE等。
3.表格和列:表格是SQL中的基本数据结构,由列和行组成。
列名是表格中每个单元格的名称,行是表格中的数据单元。
4.条件:条件用于筛选表格中的数据。
常用的条件包括等于、不等于、大于、小于、包含等。
5.操作符:操作符用于执行各种数据操作,如加法、减法、乘法、除法等。
6.排序和分组:SQL支持对表格数据进行排序和分组,以便对数据进行更高级的查询和分析。
三、标准内容1.语法规则:详细描述SQL语句的语法结构,包括关键字、表格和列的命名规则、条件和操作符的使用方法等。
2.数据类型:定义SQL支持的数据类型,包括数字、字符串、日期等。
3.查询语句:规定如何使用SELECT语句从表格中检索数据,包括通配符的使用、聚合函数的使用等。
4.插入语句:规定如何使用INSERT语句向表格中插入数据。
5.更新语句:规定如何使用UPDATE语句修改表格中的数据。
6.删除语句:规定如何使用DELETE语句删除表格中的数据。
7.事务处理:规定如何使用事务来确保数据库操作的原子性、一致性和隔离性。
8.安全性:规定如何使用SQL语句来保护数据库的安全性,包括用户身份验证、权限管理等。
9.性能优化:提供一些优化SQL语句的建议,以提高查询性能和响应速度。
四、标准实施1.数据库管理系统开发商:数据库管理系统开发商应遵循本标准,确保其产品支持SQL语言的规范使用。
SQL书写规范
![SQL书写规范](https://img.taocdn.com/s3/m/3dee6600bed5b9f3f90f1cf1.png)
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脚本编写教程](https://img.taocdn.com/s3/m/6887f634ba68a98271fe910ef12d2af90242a8eb.png)
sql脚本编写教程SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。
它允许用户执行各种操作,包括创建、查询、插入、更新和删除数据。
SQL脚本是包含一系列SQL语句的文件,用于执行数据库操作。
本教程将指导你如何编写SQL脚本,并提供一些常用的SQL 语句示例。
1. 创建表在SQL中,使用CREATE TABLE语句可以创建表。
语法如下:CREATE TABLE table_name (column1 datatype,column2 datatype,...);例如,创建一个名为"students"的表,它包含id、name和age 列,可以使用以下语句:CREATE TABLE students (id INT,name VARCHAR(50),age INT);2. 插入数据使用INSERT INTO语句可以向表中插入数据。
语法如下:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);例如,插入一条学生数据可以使用以下语句:INSERT INTO students (id, name, age)VALUES (1, 'John', 20);3. 查询数据使用SELECT语句可以从表中查询数据。
语法如下:SELECT column1, column2, ...FROM table_nameWHERE condition;例如,查询所有学生的姓名和年龄可以使用以下语句:SELECT name, ageFROM students;4. 更新数据使用UPDATE语句可以更新表中的数据。
语法如下:UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;例如,将id为1的学生年龄更新为22可以使用以下语句:UPDATE studentsSET age = 22WHERE id = 1;5. 删除数据使用DELETE FROM语句可以删除表中的数据。
SQL编码规范
![SQL编码规范](https://img.taocdn.com/s3/m/9638c3c148649b6648d7c1c708a1284ac850059f.png)
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语法规则](https://img.taocdn.com/s3/m/a9790fb6bb0d4a7302768e9951e79b8968026886.png)
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语法规则的一部分,不同的数据库管理系统可
能会有些许差异,具体的规则还需要根据所使用的数据库来确定。
sql 规则和范式
![sql 规则和范式](https://img.taocdn.com/s3/m/028ea9dadbef5ef7ba0d4a7302768e9951e76e96.png)
sql 规则和范式
SQL规则和范式是数据库设计和管理中非常重要的概念。
首先,让我们来谈谈SQL规则。
SQL是结构化查询语言的缩写,它是一种
用于管理关系型数据库的标准化语言。
SQL规则是指在编写SQL语
句时需要遵循的一系列规则和约定,以确保数据库操作的准确性和
一致性。
这些规则包括语法规则、数据类型规则、约束规则等。
例如,SQL语句必须按照特定的语法结构编写,数据类型必须与字段
定义一致,约束条件必须满足数据库设计的要求等。
接下来是范式的概念。
范式是用来规范化数据库设计的一组原则,旨在减少数据冗余和提高数据的一致性。
常见的范式包括第一
范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
第一范式要求每个字段具有原子性,不可再分;第二范式要求每个非主键字段
完全依赖于全部主键而不是部分主键;第三范式要求每个字段都直
接依赖于主键,而不是依赖于其他非主键字段。
在SQL中,范式的应用可以提高数据库的性能和可维护性,减
少数据冗余和提高数据的完整性。
但是,过度范式化也可能导致查
询性能下降,需要在设计数据库时权衡范式化和性能之间的关系。
总的来说,SQL规则和范式是数据库设计和管理中非常重要的概念,它们能够帮助我们设计出高效、可靠的数据库结构,提高数据的一致性和完整性。
在实际应用中,需要根据具体的业务需求和性能要求来灵活运用这些原则。
mybatis.xml中sql编写规范
![mybatis.xml中sql编写规范](https://img.taocdn.com/s3/m/0a598d0b0a4e767f5acfa1c7aa00b52acfc79c63.png)
mybatis.xml 中sql 编写规范一、越少的代码,越强悍的功能,xml 里面应该6个sql 语句就够用了,修改,维护成本很低,见下表英文名方法名称 核心点 建议 insert1.新增数据 如果是自增主键,应该返回主键ID deleteById2. 根据主键ID 删除数据 sql 默认加limit 1,防止多删数据 此方法不建议有,建议逻辑删除 updateById3. 根据主键ID 修改数据 sql 默认加limit 1,防止多修改数据 selectById4. 根据主键查询数据 查询一条数据selectByIdForUpdate 5. 根据主键加锁查询数据 加锁查询一条数据,事务处理用queryListByParam6. 根据输入条件查询数据列表 和7配合使用 queryCountByParam7. 根据输入条件查询总数 和6配合使用二、公共的查询条件和字段列表等抽出公共sql 段,方便使用 英文名方法名称 核心点 建议 _field_list1.字段列表 修改方便,方便字段排序 _value_list2. 字段值列表 修改方便,方便字段值排序_common_where 3. 通用查询条件 每个字段的等值判断_regin_where 4. 通用范围区间条件 字段的时间区间,字段的金额区间等的判断_contain_where 5. 包含字段值范围条件 字段的常量值包含判断,in ,not in_common_sorts 6. 通用排序条件 order by三、一个mybatis.xml 例子Sql代码1.<?xml version="1.0" encoding="UTF-8"?>2.<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd">3.<mapper namespace="Assets">4.5.6.<!-- 设置1分钟缓存,缓存大小1024,采用最近最少使用算法 -->7.<cache readOnly="true" flushInterval="60000" size="10" eviction="LRU" />8.9.<resultMap type="Assets" id="AssetsResultMap">10.<id property="id" column="id" />11.<result property="userId" column="user_id" />12.<result property="amount" column="amount" />13.<result property="earning" column="earning" />14.<result property="type" column="type" />15.<result property="status" column="status" />16.<result property="productId" column="product_id" / >17.<result property="productName" column="product_n ame" />18.<result property="cardNo" column="card_no" />19.<result property="bankCode" column="bank_code" / >20.<result property="orderId" column="order_id" />21.<result property="effectiveDate" column="effective_d ate" />22.<result property="redeemType" column="redeem_type"/>23.<result property="initAmount" column="init_amount" />24.<result property="initEarning" column="init_earning" />25.<result property="redeemingAmount" column="rede eming_amount"/>26.<result property="redeemingEarning" column="redee ming_earning"/>27.<result property="redeemedAmount" column="redee med_amount"/>28.<result property="redeemedEarning" column="redee med_earning"/>29.<result property="punishAmount" column="punish_a mount"/>30.<result property="latestRedeemTime" column="latest _redeem_time"/>31.<result property="maturityDate" column="maturity_d ate"/>32.<result property="createTime" column="create_time" />33.<result property="modifyTime" column="modify_tim e" />34.<result property="remark" column="remark" />35.</resultMap>36.37.<!-- 字段列表 -->38.<sql id="_field_list">39.id,er_id,41.amount,42.earning,43.type,44.status,45.product_id,46.product_name,47.card_no,48.bank_code,49.order_id,50.effective_date,51.redeem_type,52.init_amount,53.init_earning,54.redeeming_amount,55.redeeming_earning,56.redeemed_amount,57.redeemed_earning,58.punish_amount,test_redeem_time,60.maturity_date,61.create_time,62.modify_time,63.remark64.</sql>65.66.<!-- 字段值列表 -->67.<sql id="_value_list">68.#{id},69.#{userId},70.#{amount},71.#{earning},72.#{type},73.#{status},74.#{productId},75.#{productName},76.#{cardNo},77.#{bankCode},78.#{orderId},79.#{effectiveDate},80.#{redeemType},81.#{initAmount},82.#{initEarning},83.#{redeemingAmount},84.#{redeemingEarning},85.#{redeemedAmount},86.#{redeemedEarning},87.#{punishAmount},88.#{latestRedeemTime},89.#{maturityDate},90.#{createTime},91.#{modifyTime},92.#{remark}93.</sql>94.95.<!-- 通用查询条件不支持ID查询条件,ID的直接通过ID即可以查 -->96.<sql id="_common_where">97.<if test="id != null"> AND id = #{id}</if>98.<if test="userId != null"> AND user_id = #{userId}</if >99.<if test="amount != null"> AND amount = #{amount} </if>100.<if test="earning != null"> AND earning = #{earning} </if>101.<if test="type != null"> AND type = #{type}</if>102.<if test="status != null"> AND status = #{status}</if>103.<if test="productId != null"> AND product_id = #{pro ductId}</if>104.<if test="productName != null"> AND product_name = #{productName}</if>105.<if test="cardNo != null"> AND card_no = #{cardNo} </if>106.<if test="bankCode != null"> AND bank_code = #{ba nkCode}</if>107.<if test="orderId != null"> AND order_id = #{orderId} </if>108.<if test="effectiveDate != null"> AND effective_date = #{effectiveDate}</if>109.<if test="redeemType != null"> AND redeem_type = # {redeemType}</if>110.<if test="initAmount != null"> AND init_amount = #{i nitAmount}</if>111.<if test="initEarning != null"> AND init_earning = #{in itEarning}</if>112.<if test="redeemingAmount != null"> AND redeemin g_amount = #{redeemingAmount}</if>113.<if test="redeemingEarning != null"> AND redeeming _earning = #{redeemingEarning}</if>114.<if test="redeemedAmount != null"> AND redeemed_amount = #{redeemedAmount}</if>115.<if test="redeemedEarning != null"> AND redeemed_ earning = #{redeemedEarning}</if>116.<if test="punishAmount != null"> AND punish_amou nt = #{punishAmount}</if>117.<if test="latestRedeemTime != null">118.<![CDATA[119.AND latest_redeem_time = #{latestRedeemTime, jdbcT ype=TIMESTAMP}120.]]>121.</if>122.<if test="maturityDate != null">123.<![CDATA[124.AND maturity_date = #{maturityDate, jdbcType=TIME STAMP}125.]]>126.</if>127.<if test="createTime != null">128.<![CDATA[129.AND create_time = #{createTime, jdbcType=TIMESTA MP}130.]]>131.</if>132.<if test="modifyTime != null">133.<![CDATA[134.AND modify_time = #{modifyTime, jdbcType=TIMEST AMP}135.]]>136.</if>137.<if test="remark != null"> AND remark = #{remark}</if>138.</sql>139.140.141.<!-- 通用范围区间查询 -->142.<sql id="_regin_where">143.<if test="egtCreateTime != null">144.<![CDATA[145.AND create_time >= #{egtCreateTime, jdbcType=TIME STAMP}146.]]>147.</if>148.<if test="ltCreateTime != null">149.<![CDATA[150.AND create_time < #{ltCreateTime, jdbcType=TIMEST AMP}151.]]>152.</if>153.</sql>154.155.156.<!-- 通用排序处理 -->157.<sql id="_common_sorts">158.<if test="sorts != null">159.ORDER BY160.<foreach collection="sorts" item="item" separator="," >161.${item.column.columnName} ${item.sortMode.mode} 162.</foreach>163.</if>164.</sql>165.166.167.<!-- in 和 not in的通用查询where -->168.<sql id="_contain_where">169.<if test="containStatusSet!=null">170.AND status IN171.<foreach item="item" index="i" collection="containSt atusSet" separator="," open="(" close=")" >172.#{item}173.</foreach>174.</if>175.176.</sql>177.178.179.<!-- 插入操作 -->180.<insert id="insert" parameterType="Assets">181.INSERT INTO assets (182.<include refid="_field_list"/>)183.VALUES (184.<include refid="_value_list"/>)185.</insert>186.187.188.<!-- 根据ID主键进行删除,注意limit 1 -->189.<delete id="deleteById" parameterType="ng.St ring" >190.delete from assets where id = #{id} limit 1191.</delete>192.193.194.<!-- 根据主键ID进行更新,注意limit 1 -->195.<update id="updateById" parameterType="Assets"> 196.UPDATE assets197.<set>198.<if test="userId != null">er_id = #{userId},200.</if>201.<if test="amount != null">202.amount = #{amount},203.</if>204.<if test="earning != null">205.earning = #{earning},206.</if>207.<if test="type != null">208.type = #{type},209.</if>210.<if test="status != null">211.status = #{status},212.</if>213.<if test="productName != null">214.product_name = #{productName},215.</if>216.<if test="productId != null">217.product_id = #{productId},218.</if>219.<if test="cardNo != null">220.card_no = #{cardNo},222.<if test="bankCode != null">223.bank_code = #{bankCode},224.</if>225.<if test="orderId != null">226.order_id = #{orderId},227.</if>228.<if test="effectiveDate != null">229.effective_date = #{effectiveDate},230.</if>231.<if test="redeemType != null">232.redeem_type = #{redeemType},233.</if>234.<if test="initAmount != null">235.init_amount = #{initAmount},236.</if>237.<if test="initEarning != null">238.init_earning = #{initEarning},239.</if>240.<if test="redeemingAmount != null"> 241.redeeming_amount = #{redeemingAmount}, 242.</if>243.<if test="redeemingEarning != null"> 244.redeeming_earning = #{redeemingEarning}, 245.</if>246.<if test="redeemedAmount != null"> 247.redeemed_amount = #{redeemedAmount}, 248.</if>249.<if test="redeemedEarning != null"> 250.redeemed_earning = #{redeemedEarning},252.<if test="punishAmount != null">253.punish_amount = #{punishAmount},254.</if>255.<if test="latestRedeemTime != null">test_redeem_time = #{latestRedeemTime},257.</if>258.<if test="maturityDate != null">259.maturity_date = #{maturityDate},260.</if>261.<if test="modifyTime != null">262.modify_time = #{modifyTime},263.</if>264.<if test="remark != null">265.remark = #{remark},266.</if>267.</set>268.269.<where>270.id = #{id} limit 1271.</where>272.</update>273.274.275.<!-- 根据ID进行查询 -->276.<select id="selectById" resultMap="AssetsResultMap" >277.select * from assets where id = #{id}278.</select>279.281.<!-- 根据ID进行加行锁查询 -->282.<select id="selectByIdForUpdate" resultMap="AssetsR esultMap">283.select * from assets where id = #{id} for update284.</select>285.286.287.<!-- 根据查询条件查询数据和queryCountByParam方法配对使用 -->288.<select id="queryListByParam" parameterType="map" resultMap="AssetsResultMap">289.SELECT290.<include refid="_field_list"/>291.FROM292.assets293.<where>294. 1 = 1295.<include refid="_common_where"/>296.<include refid="_regin_where"/>297.<include refid="_contain_where"/>298.</where>299.300.<include refid="_common_sorts"/>301.302.<if test="offset != null and rows != null">303.limit #{offset}, #{rows}304.</if>305.</select>306.308.<!-- 根据查询条件查询总数和queryListByParam方法配对使用 -->309.<select id="queryCountByParam" parameterType="m ap" resultType="ng.Integer">310.SELECT count(1) FROM assets311.<where>312. 1 = 1313.<include refid="_common_where"/>314.<include refid="_regin_where"/>315.<include refid="_contain_where"/>316.</where>317.</select>318.319.</mapper>。
数据库设计及编程规范
![数据库设计及编程规范](https://img.taocdn.com/s3/m/7e4dc9492b160b4e767fcf12.png)
Transact-SQL语言编程规范(仅供内部使用)修订记录目录1 排版 (5)2 数据库对象命名 (6)3 数据库设计 (8)4 程序效率 (13)5 事务 (15)Transact-SQL语言编程规范本规范是基于软件编程规范总则的基础上,针对Sybase和MS SQL Server的Transact-SQL语言的编写风格做出统一的规范约束,以提高源程序的执行效率和可维护性。
本规范的内容包括:排版、数据库对象命名、数据库设计、程序效率与事务等。
本规范的示例都以MS SQL Server为背景,采用以下的术语描述:★规则:编程时必须遵守的原则★建议:编程时必须加以考虑的原则★说明:对此规则或建议进行必要的解释。
★示例:对此规则或建议从正、反两方面给出例子。
1排版规则1-1:程序块采用缩进风格,缩进的空格数为4个;但凡SQL程序可加容器关键字BEGIN...END的内容都要缩格,他的内容都要左对齐、类似程序中的函数与子程序。
使用SQL Server的Query Analyzer工具编辑程序时,请打开文件菜单的configure对话框,选中Change tabs to space charact 4 spaces复选项。
规则1-2:在SQL语句的编写中,凡是SQL语句的关键字一律大写,如:SELECT、ORDER BY、GROUP BY、FROM、WHERE、UPDATE、INSERT INTO、SET、BEGIN、END等。
2数据库对象命名规则2-1:表名以字符串tb开头,字段名以字符串fld开头,逗号在每行的最前面。
示例:如下的表命名方式比较直观。
CREATE TABLE tblEmployee(fldID INT NOT NULL,fldName CHAR(20) NOT NULL,fldBirthday SMALLDATETIME NOT NULL,fldNation CHAR(10) NOT NULL)规则2-2:视图名以字符串vw开头,字段名以字符串fld开头。
海致大数据建模sql语句编写文档-概述说明以及解释
![海致大数据建模sql语句编写文档-概述说明以及解释](https://img.taocdn.com/s3/m/edadb89c370cba1aa8114431b90d6c85ed3a8877.png)
海致大数据建模sql语句编写文档-概述说明以及解释1.引言1.1 概述海致大数据建模SQL语句编写文档是为了帮助数据分析师和开发人员更好地理解和应用海致大数据建模中的SQL语句。
本文将详细介绍海致大数据建模的概念、原理和应用场景,以及如何编写高效和准确的SQL语句进行数据建模和分析。
我们将从海致大数据建模的概述开始,介绍其在数据分析和业务决策中的重要性和作用。
通过本文的学习,读者可以掌握如何利用SQL语句进行数据建模,提高数据分析的效率和准确性,同时为企业决策提供更有力的支持。
在接下来的章节中,我们将深入探讨SQL语句的编写指南和实例演练,帮助读者更好地理解和应用海致大数据建模中的SQL语句。
同时,我们也将对本文所涉及的内容进行总结,并展望未来海致大数据建模在数据分析领域的发展前景。
通过本文的学习,读者将对海致大数据建模和SQL语句编写有更深入的理解,从而能够更好地应用这些技术解决实际业务问题,提升数据分析的能力和水平。
1.2 文章结构本文分为引言、正文和结论三个部分。
- 引言部分介绍了本文的背景、内容概要和写作动机,为读者提供了一个整体的把握。
- 正文部分主要包括海致大数据建模的概述、SQL语句编写指南和实例演练三个部分。
在海致大数据建模概述部分,将介绍海致大数据建模的概念、相关背景和应用场景;SQL语句编写指南部分将指导读者如何编写高效、规范的SQL语句;实例演练部分将通过具体的案例演示,帮助读者更好地理解并应用所学知识。
- 结论部分对本文的内容和重点进行总结,并展望未来可能的发展方向。
同时,通过结束语,为读者留下一个深思。
通过以上结构安排,本文旨在为读者提供全面、系统的海致大数据建模SQL语句编写指导,帮助读者在实践中更好地应用相关知识,提升数据建模能力。
1.3 目的目的部分:本文的目的在于介绍海致大数据建模工作中SQL语句的编写方法和技巧,帮助读者了解如何在数据建模过程中使用SQL语句进行数据处理和分析。
markdown sql 写法
![markdown sql 写法](https://img.taocdn.com/s3/m/58edec4ef68a6529647d27284b73f242336c310a.png)
SQL(Structured Query Language)是一种用于管理关系数据库管理系统(RDBMS)的标准化语言。
它允许用户对数据库进行查询、更新、删除以及管理数据的操作。
在实际的数据库管理工作中,我们经常需要编写SQL语句来完成各种操作。
而在编写SQL语句的过程中,合理的格式和规范的写法能够提高代码的可读性和可维护性,从而提高工作效率。
在本文中,我们将介绍SQL语句的写法,并讨论一些在实际工作中常见的SQL写法问题。
一、基本SQL语句的写法1. SELECT语句的写法SELECT语句是SQL中最常用的语句之一,用于从数据库中检索数据。
合理的SELECT语句写法能够提高代码的可读性。
以下是一些常见的SELECT语句的写法规范:(1)明确指定字段名称,避免使用“*”通配符。
(2)使用换行和缩进来规范SQL语句的结构。
(3)使用AS关键字为字段设置别名,增加代码的可读性。
(4)使用LIMIT关键字限制返回的记录数。
2. INSERT语句的写法INSERT语句用于向数据库中插入新的记录。
在编写INSERT语句时,我们需要注意以下几点:(1)明确指定要插入数据的字段名称。
(2)在VALUES子句中为每个字段指定要插入的值。
(3)使用换行和缩进来规范SQL语句的结构。
3. UPDATE语句的写法UPDATE语句用于更新数据库中的记录。
在编写UPDATE语句时,需要注意以下几点:(1)明确指定要更新的字段名称和更新的值。
(2)使用WHERE子句限制更新的记录范围,避免意外更新所有记录。
(3)使用换行和缩进来规范SQL语句的结构。
4. DELETE语句的写法DELETE语句用于从数据库中删除记录。
在编写DELETE语句时,需要注意以下几点:(1)使用WHERE子句限制删除记录的范围,避免意外删除所有记录。
(2)使用换行和缩进来规范SQL语句的结构。
二、高级SQL语句的写法除了基本的SELECT、INSERT、UPDATE、DELETE语句外,SQL还支持一些高级的语句,如JOIN、子查询、UNION等。
sql 的编码格式-概述说明以及解释
![sql 的编码格式-概述说明以及解释](https://img.taocdn.com/s3/m/73e86bb7c9d376eeaeaad1f34693daef5ff71376.png)
sql 的编码格式-概述说明以及解释1.引言1.1 概述SQL(结构化查询语言)是用于管理和操作关系型数据库的编程语言。
在进行SQL编码时,正确的编码格式对于保证数据的完整性、准确性和安全性至关重要。
本文将详细介绍SQL编码格式的定义、常见的SQL编码格式以及SQL编码格式的重要性。
在编写SQL语句时,需要按照一定的格式和规范来编码,以保证语句的可读性和易维护性。
SQL编码格式主要包括缩进、换行、大小写、注释等方面的规范。
首先,缩进在SQL编码中起到了对语句进行层级划分的作用,使得代码结构清晰可见。
通过缩进,可以清晰地区分出SELECT语句、FROM子句、WHERE子句等不同的部分。
其次,换行在SQL编码中能够使得复杂的SQL语句更易理解。
将不同的子句和关键字放在不同的行上,可以使得语句的层次更加明确,也便于注释和修改。
同时,对于SQL关键字和标识符的大小写,也需要遵循一定的编码规范。
一般来说,SQL关键字建议使用大写,而表名、列名等标识符则建议使用小写。
这样可以增加代码的可读性,并且能够避免与关键字冲突的问题。
此外,在SQL编码时添加注释是十分重要的。
注释能够增加代码的可维护性和可读性,帮助其他人更好地理解意图和功能。
注释可以在语句的前面或是行内进行添加,以帮助开发人员更好地理解该段代码的作用和目的。
综上所述,SQL编码格式在数据库开发中起到了至关重要的作用。
通过正确的缩进、换行、大小写和注释等编码格式,可以使得SQL语句更加易读、易懂,提高代码的可维护性和可读性。
在后续的章节中,本文将进一步讨论常见的SQL编码格式以及SQL编码格式的重要性。
1.2 文章结构本文主要以SQL 的编码格式为主题进行探讨和研究。
为了更好地阐述SQL 编码格式的定义、常见的格式以及其重要性,本文将从以下几个方面进行分析。
首先,将介绍SQL 编码格式的定义。
我们将解释什么是SQL 编码格式,它是一种用于编写SQL 语句的规范和约定。
sql创建规则
![sql创建规则](https://img.taocdn.com/s3/m/d53526e7ac51f01dc281e53a580216fc700a53c0.png)
sql创建规则SQL创建规则一、概述SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言,它具有创建、查询、更新和删除数据库中数据的能力。
在使用SQL创建规则时,需要遵循一定的规范和约束,以确保数据库的结构和数据的完整性。
二、表的创建规则1. 表名:表名应具有描述性,能够清晰地表达表的含义和作用。
表名应使用大写字母和下划线组成,避免使用特殊字符和空格。
2. 字段名:字段名应具有描述性,能够清晰地表达字段的含义和作用。
字段名应使用小写字母和下划线组成,避免使用特殊字符和空格。
3. 字段类型:根据数据的实际需求,选择合适的字段类型,如整数型、字符型、日期型等。
应避免使用过长或过短的字段类型,以节省存储空间和提高查询效率。
4. 主键:每个表应设置一个主键,用于唯一标识表中的每条记录。
主键应选择字段的唯一且不可更改的属性,如自增长的整数型字段。
5. 约束:根据实际需求,可以为表和字段设置约束,如唯一约束、非空约束等。
约束可以确保数据的完整性和一致性。
三、索引的创建规则1. 索引字段:选择适合作为索引的字段,通常是经常被查询或排序的字段。
应避免过长的字段或含有大量重复值的字段作为索引字段。
2. 索引类型:根据查询需求和数据特点,选择合适的索引类型,如普通索引、唯一索引、组合索引等。
不同的索引类型有不同的使用场景和效果。
3. 索引覆盖:尽可能使用索引覆盖查询,即通过索引就能获取到查询结果,而不需要再访问数据表。
这样可以提高查询效率和减少IO 开销。
四、视图的创建规则1. 视图名称:视图名称应具有描述性,能够清晰地表达视图的含义和作用。
视图名称应使用大写字母和下划线组成,避免使用特殊字符和空格。
2. 视图查询:视图的查询语句应尽量简洁明了,避免使用复杂的连接操作和子查询。
视图的查询结果应与相关数据表的字段对应,确保数据的一致性。
3. 视图更新:视图可更新性应根据实际需求进行设置,可以选择允许或禁止对视图进行更新操作。
T-SQL编程规范
![T-SQL编程规范](https://img.taocdn.com/s3/m/9d7cd3f6770bf78a65295460.png)
2. 基本原则
ü ü ü ü ü 以大小写敏感编写 SQL 语句。 尽量使用 Unicode 数据类型。 优先使用连接代替子查询或嵌套查询。 尽量使用参数化 SQL 查询代替语句拼接 SQL 查询。 禁止使用[拼音]+[英语]的方式来命名 SQL 对象或变量。
3. 命名规范
在一般情况下,采用 Pascal 样式命名数据库对象,使在开发基于数据库应用程序的时候通过 ORM 工具 生成的数据访问代码更好的符合命名规范。另外,关系型数据库同 Xml 结合得越来越紧密,规范的命名很有 必要。 在实际数据库开发过程中,如果需求方已经提供数据库设计方案,以提供的方案为准;在原有数据库 上进行升级开发时,在可行的情况下可适当做出设计调整以符合编程规范。
3.1.7 存储过程
采用 Pascal 样式命名,命名格式为 pr_ +[存储过程名称]。 示例:pr_GetUser pr_AddUser
第 4 页,共 20 页
Transact-SQL 编程规范指导书
3.1.8 函数
自定义函数采用 Pascal 样式命名,命名格式为 fn_+[函数名],系统函数使用全部大写。 示例:SELECT ISNULL(@LastName,'Unknown last name'); fn_GETDATE()
3.1 对象命名
3.1.1 数据库
采用 Pascal 样式命名,命名格式为[项目英文名称]。 示例:AdventureWorks
3.1.2 关系型数据仓库
采用 Pascal 样式命名,命名格式为[项目英文名称] + DW。
第 3 页,共 20 页
Transact-SQL 编程规范指导书 示例:AdventureWorksDW
JAVA编码规范中关于sql语句规范要求
![JAVA编码规范中关于sql语句规范要求](https://img.taocdn.com/s3/m/3da1a68abceb19e8b8f6ba81.png)
JAVA编码规范中关于sql语句规范要求JAVA编码规范中关于sql语句规范要求1、关键字单独占一行。
(SELECT、UPDATE、DELETE FROM、INSERT INTO、VALUES、SET、FROM、WHERE、GROUP BY、ORDER BY、JOIN)2、每行显式加回车换行符'\r\n'3、每个查询字段、条件字段、分组字段、排序字段单独占一行4、多表连接查询字段、表名都要加别名,且一条语句只要一种连接方式。
5、续行的开始位置为第7个字符,具体缩进格式参见范本sample_sql.txt6、变量用绑定变量或占位符!7、为使代码清晰,“+'\r\n'”右对齐。
---------------------------------------------------------------------------------------------------注意缩进格式说明:select的第一个字段前面空一个“select”的长度,即空6个空格,下面的所有字段、表名的开始位置上下保持对齐。
也就是说,select的字段、from的表名、where的条件字段、group by的分组字段、order by的排序字段的开始位置都是从第7个字符开始的。
delete from、insert into、update语句的字段的开始位置,与此相同。
","前空4个空格,"and"前空2个空格。
left join on在同一行,每个连接字段单独占一行。
----------------------------------------------------------------------------------------------------- 建议:1、续行的“"”与上面的对齐,例如:String sql = " insert into " + "\r\n"+ " ACC_BUDYEARINIT " + "\r\n"2、在insert 语句的values子句、其他sql的where子句中,建议用绑定变量,即用"?" 或 :var_name不要用+ var_name 写成常数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL代码编写指导规范项目:规范文号:COD-STA-03版本:V1.1编写者:许飞云时间:2005-11-4SQL代码编写指导规范时间版本作者/修改人变更原因2005-11-4 V1.0 许飞云初版发布2007-3-5 V1.1 刘莉添加5.4 约定规则目录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 Structrued Query Language 结构化查询语言如下DDL Data Definition Language 数据定义语言CREATE, ALTER, DROP, DECLAREDM L Data Manipulation Language 数据操纵语言SELECT, DELETE,UPDA TE, INSERTDCL Data Control Language 数据控制语言GRANT, REVOKE, COMMIT, ROLLBACK1.6 参考MSDN-命名指南Sql Server 2000 联机帮助2 通用规则规则1: 每一次不能执行建议的编码规则,必须要有合理的理由,理由不包括个人的编码风格因素。
规则2: 在一个文件中不要混合不同所有者的代码,因为第三方的代码可能不会遵守相同的编码规范。
3 配置约定为方便开发小组成员编写出高质量的SQL代码,需要开发小组各成员按照统一的标准配置适合快速、高效开发的使用环境。
这里,将会列出一些较序号项目推荐方案备注1 SQL代码编辑工具查询分析器SQL Server 自带2 缩进符使用4个空格字符需要配置编辑器➢可以使用Tab键进行缩进处理,建议在配置选项中,将默认的制表符,更改为四个空格字符,这样不管用什么程序查看SQL代码,都能保证是一致的格式4 格式约定表面上,SQL 代码的格式似乎并不重要,但一致的格式可以使您的同事(不论是同一小组的成员还是更大范围的项目开发团队的成员)更轻松地浏览和理解您的SQL代码。
为SQL 语句定义一个结构,遵循一目了然的结构将使您可以更轻松地查找和确认语句的不同部分。
统一的格式还使您可以更轻松地在复杂的SQL 语句中增、删代码段,也使调试工作变得更容易。
下面是SELECT 语句的格式示例,来说明SQL代码中的部份适用的格式:SELECT , Last, First, E.Number, ISNULL(I.Description,'NA') AS DescriptionFROM tblCompany AS CJOIN tblEmployee AS EON panyID = panyIDLEFT JOIN tblCoverage AS VON E.EmployeeID = V.EmployeeIDLEFT JOIN tblInsurance AS ION V.InsuranceID = I.InsuranceIDWHERE LIKE @NameAND V.CreateDate > CONVERT(smalldatetime,'01/01/2000')ORDER BY , Last, First, E.Number, ISNULL(I.Description,'NA')SELECT @Retain = @@ERROR, @Rows = @@ROWCOUNTIF @Status = 0 SET @Status = @Retain➢在代码块中使用缩进、块、制表符(用四个空格代替的)和空格➢一个嵌套代码块中的语句一般使用以四个空格的缩进为较好的原则➢在同一语句中开始新行时,使SQL 关键字左对齐➢使用一个(而不是两个)空行分隔SQL 代码的逻辑块,只要需要就可以使用➢请在关键字、分隔符、操作符之间加入一空格➢语句尽可能要简捷➢当对语句添加注释时,请在注释符与注释之前,额外加上一空格5 命名约定5.1 一般规则规则1: 使用US-English 作为命名标识符依据。
规则2: 使用命名标识符的Pascal 大小写、Camel 大小写。
5.2命名规则由于不同的开发语言都有各自的格式约定,因此,对于SQL代码而言,在命名方面制定一些大家都比较熟悉或是习惯使用的标准是很有必要的。
序号项目关键字命名规则前缀示例备注1 表TABLE Pascal无CompanyInfo2 存储过程PROCEDURE Camel sp spDeleteUser Stored Procedure3 函数FUNCTION Camel fn fnGetVersion Function4 触发器TRIGGER Camel 无updEmployeeData 一般不带上trigger对应的缩写5 视图VIEW Camel v vUserCompany 通常使用表名组合6 索引INDEX Camel idx idx EmployeeID7 游标CURSOR Pascal 无EmployeeCursor8 数据库Database Pascal db ECTMS 但一般不带前缀的5.3 常用规则现列出在书写SQL代码时所使用到的一些常用规则:➢创建表时,建议使用自增序号(从1 到N)列,在使用包含序号的表时会很方便➢对于SQL代码中的关键字,建议全部使用大写格式,包括用于DDL、DML和DCL 等SQL代码中。
如:CREATE PROCEDURE➢变量名称及光标名称使用混和大小写,即单词首字母大写,单词剩下的全小写➢数据类型使用小写➢表名别名要简短,但意义要尽量明确。
通常,使用大写的表名作为别名,使用AS 关键字指定表或字段的别名。
➢当一个SQL 语句中涉及到多个表时,始终使用别名来限定字段名。
这使其他人阅读起来更清楚,避免了含义模糊的引用➢当相关数字出现在连续的代码行中时(例如一系列SUBSTRING 函数调用),将它们排成列➢声明SQL 局部变量(例如@lngTableID)时,使用适当的数据类型声明和一致的大写➢始终指定字符数据类型的长度,并确保允许用户可能需要的最大字符数,因为超出最大长度的字符会丢失➢始终指定十进制数据类型的精度和范围,否则,将默认为未指定精度和整数范围➢在尽可能出错的SQL语句中,使用错误处理程序,且必须使用SET 或SELECT 立即捕获错误代码(@@ERROR)以保存至特定的变量中➢避免使用“未声明的”功能,例如系统表中未声明的列、SQL 语句中未声明的功能或者未声明的系统存储过程或扩展的存储过程➢不要依赖任何隐式的数据类型转换。
例如,不能为数字变量赋予字符值,而假定SQL 会进行必要的转换。
相反,在为变量赋值或比较值之前,应使用适当的CONVERT 函数使数据类型相匹配。
另一个示例:虽然SQL 会在进行比较之前对字符表达式进行隐式且自动的RTRIM,但不能依赖此行为,因为兼容性级别设置非字符表达式会使情况复杂化➢不要将空的变量值直接与比较运算符(符号)比较➢对于变量的值与空值比较,应使用IS NULL 或IS NOT NULL,或者使用ISNULL 函数➢不要使用STR 函数进行舍入,此函数只能用于整数。
如果需要十进制值的字符串形式,应先使用CONVERT 函数(转至不同的范围)或ROUND 函数,然后将其转换为字符串。
也可以使用CEILING 和FLOOR 函数➢使用数学公式时要小心,因为SQL 可能会将表达式强制理解为一个不需要的数据类型。
如果需要十进制结果,应在整数常量后加点和零(.0)➢决不要依赖SELECT 语句会按任何特定顺序返回行,除非在ORDER BY 子句中指定了顺序➢通常,应将ORDER BY 子句与SELECT 语句一起使用。
可预知的顺序(即使不是最方便的)比不可预知的顺序强,尤其是在开发或调试过程中➢不要在T-SQL 代码中使用双引号。
应为字符常量使用单引号➢在SQL Server 2000 中,尽量使用表变量来代替临时表。
如果表变量包含大量数据,请注意索引非常有限(只有主键索引)➢先在例程中创建临时表,最后再显式删除临时表。
将DDL 与DML 语句混合使用有助于处理额外的重新编译活动➢要认识到临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。
但是,对于一次性事件,最好使用导出表➢几乎所有的存储过程(或触发器)都应在开始时设置SET NOCOUNT ON,而在结束时设置SET NOCOUNT OFF,可以避免SQL Server在执行存储过程的每个语句后向客户端发送DONE_IN_PROC 消息➢要在例程中使用多个数据表/库修改语句,包括在一个循环中多次执行一个语句,就应考虑声明显式事务➢使用基于光标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题。