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开发规范1.书写格式1) SQL语句的SQL保留字大写。

2) 变量名称使用混合大小写,数据类型使用小写。

3) 新建的表以TB_作前缀比如TB_User,视图VW_,存储过程PROC_,函数FUN_,表名称不加s;如果表比较多,一般分模块来区分,比如TB_SM_User,表示系统模块的用户表。

4) 当命名存储过程名或者视图和函数名时,如果动词加名称来描述该功能时,使用符合我们习惯的用法,即动词在前名词在后,如:GetUserInfo, AddUserInfo, EditUserInfo, DeleteUserInfo等。

5) 使用别名:当一个T-SQL语句中涉及到多个表时,始终使用表名别名(一般取表名的头两个字母)来限定字段名,避免使用table1、table2、t1、t2等类似命名。

这使其他人阅读起来更清楚,避免了含义模糊的引用。

2.缩进1) 一般缩进为4个空格。

2) 不要用Tab制表符来作缩进。

3.换行1) Select/From/Where/Order by/Group by等子句必须另起一行写。

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;4.空格1) 连接符or、in、and、以及=、<=、>=等前后加上一个空格。

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格式SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准化语言。

SQL语句可以分为多个类别,包括数据查询、数据更新、数据插入、数据删除等。

以下是一些常见的SQL语句及其标准格式:1.SELECT(查询数据):SELECT column1, column2, ...FROM table_nameWHERE condition;例如:SELECT FirstName, LastNameFROM EmployeesWHERE Department = 'IT';2.INSERT(插入数据):INSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);例如:INSERT INTO Customers (CustomerName, ContactName, City)VALUES ('ABC Company', 'John Doe', 'New York');3.UPDATE(更新数据):UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;例如:UPDATE ProductsSET Price = 15.99WHERE Category = 'Electronics';4.DELETE(删除数据):DELETE FROM table_name WHERE condition;例如:DELETE FROM OrdersWHERE OrderID = 1001;5.CREATE TABLE(创建表):CREATE TABLE table_name (column1 datatype1,column2 datatype2,...);例如:CREATE TABLE Employees (EmployeeID INT,FirstName VARCHAR(50),LastName VARCHAR(50),HireDate DATE);这些是SQL中一些基本操作的标准格式。

sql语言的标准

sql语言的标准

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 Script书写规范

跟我学程序命名规范——数据库SQL Script书写规范

跟我学程序命名规范——数据库SQL Script书写规范1.1创建数据库
1.1.1数据库命名
数据库文件的命名=db+首字母要大写的名词组。

如:dbNewTimesERP(新时代公司的ERP数据库)。

1.1.2数据库表的命名
数据库表的命名=tab+首字母要大写的名词组。

如:tabUser(管理XXX应用系统用户身份数据的表)。

1.1.3数据库表中字段的命名规则
数据库表中字段的命名规则如下表:
1.1.4存储过程的命名规则
数据库存储过程的命名= proc+首字母要大写的名词组。

如:procGetFuncs(从数据库中获取程序功能模块的存储过程)。

1.2表创建SQL语句的书写风格
CREATE TABLE 表名(
字段名类型及宽度初始条件或约束条件, --注释说明
….
)
表创建SQL语句的书写要求:字段名缩进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语句⽤于删除数据。

  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);。

相关文档
最新文档