ORACLE SQL编写规范(v1.1)

合集下载

Oracle数据库设计规范建议

Oracle数据库设计规范建议

Oracle数据库1 数据对象的命名规范1.1 通用规范1.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。

主要目的很明确,让人容易明白这个对象是做什么用的;1.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写;1.2 数据库对象命名规范1.2.1 表的命名1.2.1.1 表名的前缀:前缀_表名_T。

为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:1.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名;1.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。

表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。

比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员;1.2.2 视图命名:相关表名_V(或者根据需要另取名字);1.2.3 程序包命名:程序包名_PKG(用英文表达程序包意义);1.2.4 存储过程命名:存储过程名_PRO(用英文表达存储过程意义);1.2.5 函数命名:函数名称_FUN(用英文表达函数作用);1.2.6 触发器命名:触发器名称_TRI(用英文表达触发器作用);1.2.7 索引命名:表名_字段名_IDX(如果存在多字段索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail 上建立联合索引,命名为表名_cus_cut_cur_IDX,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立联合索引,就命名为表_tid_tom_tna_IDX;1.2.8 唯一索引命名:表名_字段名_UNI(如果存在多字段唯一索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立唯一索引,命名为表名_ cus_cut_cur_UNI,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在 custid, custom,custname上建立唯一索引,命名:表_tid_tom_tna_UNI;1.2.9 主键命名:表名_字段名_PK(如果存在多字段主键,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立主键,命名为表名_cus_cut_cur_PK,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立主键,命名:表_tid_tom_tna_PK;1.2.10 外键命名:表名_主表名_字段名_FK;1.2.11 Sequence命名:表名_列名_SEQ(或者根据需要另取名字);1.2.12 Synonym命名:与对应的数据库对象同名;1.2.12 JAVA命名:遵守公司相应的JAVA命名规范;2 SQL的设计和使用2.1 Sql 书写规范2.1.1 尽量不要写复杂的SQL:过于复杂的S QL可以用存储过程或函数来代替,效率更高;甚至如果能保证不造成瓶颈的话,把条SQL拆成多条也是可以的。

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注入攻击。

oracle数据库开发规范

oracle数据库开发规范

编程规范1:所有数据库关键字和保留字都大写;字段、变量的大小写2:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2/4个。

必须使用空格,不允许使用【tab】键。

3:当同一条语句暂用多于一行时,每行的其他关键字与第一行的关键字进行右对齐。

4:不允许多个语句写到一行,即一行只写一条语句。

5:避免把复杂的SQL语句写到同一行,建议要在关键字和谓词处换行。

6:相对独立的程序块之间必须加空行。

BEGIN、END独立成行。

7:太长的表达式应在低优先级操作符处换行,操作符或关键字应放在新行之首。

不同类型的操作符混合使用时,用括号隔离,使得代码清晰。

8: 不同类型的操作符混合使用时,应使用括号明确的表达运算的先后关系。

9:运算符以及比较符左边或者右边只要不是链接的括弧,则空一格。

10:if 后的条件要用括号括起来,括号内每行最多两个条件。

11:减少控制语句的检查次数,如在else( if..else)控制语句中,对最常用符合条件,尽量往前被检查到。

尽量避免使用嵌套的if 语句,在这种情况应使用多个if 语句来判断其可能。

命名规范1:不使用数据库关键字和保留字,为了避免不必要的冲突和麻烦。

2:严禁使用带空格的名称来给字段和表命名,会出错误而终止。

3:用户自定义数据库对象:表,视图,主外键,索引,触发器,函数,存储过程,序列,同义词,数据库连接,包,包体风格要保持一致。

数据库名称1-8个字符,其他对象1-30个字符,数据库连接不操过30个字符。

使用英文字母、数字、下划线。

除表外,其他对象命名最好用不同的前缀来区别。

表tbl_/t_视图v_序列seq_簇c_触发器trg_存储过程sp_/p_函数f_/fn_物化视图mv_包和包体pkg_类和类体typ_主键pk_外键fk_唯一索引uk_普通索引idx_位图索引bk_4:PL/SQL对象和变量命名规则输入变量i_输出变量o_输入输出变量io_普通变量v_全局变量gv_常量大写游标cur_用户自定义类型type_保存点spt_不允许使用中文和特殊字符用户对象命名应全部为小写,且不允许使用控制符号强制转换对象为小写字符变量命名,要有具体含义,能表明变量类型。

ORACLE-SQL语句学习教程

ORACLE-SQL语句学习教程

目录概述 (2)第一章SQL*PLUS 工具软件的使用 (5)第二章基本查询 (9)第三章条件查询 (13)第四章单行函数 (16)第五章多表查询 (20)第六章组函数 (23)第七章子查询 (25)第八章运行期间指定变量 (29)第九章创建基表 (31)第十章ORACLE数据字典 (36)第十一章操纵数据 (38)第十二章修改基表及其约束 (42)第十三章创建序列 (45)第十四章创建视图 (47)第十五章创建索引 (50)概述20世纪70年代初,E.F。

Codd 在计算机学会(Association of Computer Machinery,简写为ACM)期刊Communications of the ACM(ACM 通讯)发表了题为”A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的论文,该论文提出的关系数据库模型成为今天最为权威的关系型数据库管理模型.IBM公司首先使用该模型开发出了结构化英语查询语言SEQUEL(Structured English Query Language),作为其关系数据库原型System R的操作语言,实现对关系数据库的信息检索.SEQUEL后来简写为SQL,即Structured Query Language(结构化查询语言)的缩写.ORACLE公司于1997年推出了第一个商业应用的SQL软件.20世纪80年代初,美国国家标准化组织(ANSI)开始着手制订SQL标准,最早的ANSI 标准于1986年颁布,它也被称为SQL-86。

标准的出台使SQL作为标准的关系数据库语言的地位得到加强。

SQL标准几经修改和完善,目前SQL语言方面新的ANSI标准是1992年制定的ANSI X3.135—1992,“Database Language SQL”。

此标准也被国际电工委员会(International Electro technical Commission,即IEC)所属的国际标准化组织(International Standards Organization, 即ISO)所接受,并将它命名为ISO/IEC9075:1992, “Database Language 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(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书写规范

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编码规范(V1.00)文 档 信 息文档名称:SQL编码规范电子文档:版本号: 1.00密级:保密文档编号:编写人:马云日期:2007-03-27校对人:日期:审核人:日期:批准人:日期:更 改 记 录更改序号更改原因更改页码更改前版本号更改后版本号更改人生效日期备注目录1注释规范 61.1.一般性注释 61.2.函数文本注释 62.排版格式 72.1.缩进 72.2.换行 82.3.空格 102.4.大小写 102.5.对齐 103.命名规则 113.1.输入变量 113.2.输出变量 113.3.内部变量 113.4.游标命名 114.编码规范 114.1.不等于统一使用"<>" 114.2.使用表的别名 114.3.使用SELECT语句时,必须指出列名 124.4.使用INSERT语句时,必须指定插入的字段名。

124.5.减少子查询的使用 124.6.适当添加索引以提高查询效率 124.7.不要在WHERE字句中对索引列施以函数 124.8.不要使用数据库的类型自动转换功能,使用显式的类型转换 12 4.9.应使用变量绑定实现SQL语句共享,避免使用硬编码 124.10.用执行计划分析SQL性能 14附录A:Oracle SQL性能优化 14A.1选用适合的ORACLE优化器 14A.2访问TABLE的方式 15A.3共享SQL语句 15A.4选择最有效率的表名顺序(只在基于规则的优化器中有效) 17 A.5WHERE子句中的连接顺序 19A.6SELECT子句中避免使用 ‘ * ‘ 19A.7减少访问数据库的次数 19A.8使用DECODE函数来减少处理时间 21A.9整合简单,无关联的数据库访问 22A.10删除重复记录 23A.11用TRUNCATE替代DELETE全表记录 23A.12尽量多使用COMMIT 23A.13计算记录条数 24A.14用Where子句替换HAVING子句 24A.15减少对表的查询 24A.16通过内部函数提高SQL效率 26A.17使用表的别名(Alias) 27A.18用EXISTS替代IN 27A.19用NOT EXISTS替代NOT IN 28A.20用表连接替换EXISTS 29A.21用EXISTS替换DISTINCT 30A.22识别'低效执行'的SQL语句 31A.23使用TKPROF 工具来查询SQL性能状态 31A.24用EXPLAIN PLAN 分析SQL语句 32A.25用索引提高效率 34A.26索引的操作 34A.27基础表的选择 36A.28多个平等的索引 37A.29等式比较和范围比较 38A.30不明确的索引等级 39A.31强制索引失效 40A.32避免在索引列上使用计算 41A.33自动选择索引 42A.34避免在索引列上使用NOT 42A.35用>=替代> 44A.36用UNION替换OR (适用于索引列) 44A.37用IN来替换OR 48A.38避免在索引列上使用IS NULL和IS NOT NULL 49 A.39总是使用索引的第一个列 50A.40ORACLE内部操作 51A.41用UNION-ALL 替换UNION ( 如果有可能的话) 51 A.42使用提示(Hints) 53A.43用WHERE替代ORDER BY 54A.44避免改变索引列的类型 56A.45需要当心的WHERE子句 57A.46连接多个扫描 58A.47CBO下使用更具选择性的索引 60A.48避免使用耗费资源的操作 60A.49优化GROUP BY 61A.50使用日期 62A.51使用显式的游标(CURSORs) 62A.52优化EXPORT和IMPORT 62A.53分离表和索引 631注释规范.1. 一般性注释.1.1. 创建每一数据库对象时都要加上COMMENT ON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENT ON注释,以说明该列和/或列取值的含义。

sql server建表规则

sql server建表规则

SQL Server建表规则在使用SQL Server进行数据库设计和建表时,遵循一定的规则和标准是非常重要的。

这不仅可以提高数据库的性能和可维护性,还可以减少日后的问题和错误。

本文将介绍SQL Server建表的规则和注意事项,帮助您设计出高质量、高效的数据库表结构。

一、命名规则1.1 表名命名规则在SQL Server中,表名需要具有描述性,能够清晰地表达表所存储的数据内容。

表名应该使用英文,采用下划线或驼峰命名法,避免使用特殊字符或中文命名。

可以使用"order_det本人l"或者"OrderDet本人l"作为表名。

1.2 字段名命名规则字段名也需要具有描述性,能够清晰地说明字段所存储的数据内容。

字段名应该使用英文,采用下划线或驼峰命名法,避免使用特殊字符或中文命名。

可以使用"order_id"或者"OrderId"作为字段名。

1.3 主键命名规则主键字段的命名一般为表名加上“_id”的形式,例如“order_id”。

主键字段名一般需要在字段名前面加上"pk_"前缀或者在字段名后面加上"_pk"后缀,以明确表示该字段为主键。

“pk_order_id”或者“order_id_pk”。

1.4 外键命名规则外键字段的命名一般为所引用表的表名加上“_id”的形式,例如“customer_id”。

外键字段名一般需要在字段名前面加上"fk_"前缀或者在字段名后面加上"_fk"后缀,以明确表示该字段为外键。

“fk_customer_id”或者“customer_id_fk”。

二、字段规则2.1 数据类型选择在选择字段的数据类型时,需要根据存储的数据内容和对数据的操作进行合理的选择。

对于存储整数类型的字段,可以选择int或者bigint;对于存储字符串类型的字段,可以选择nvarchar或者varchar。

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.不等于统⼀使⽤"<>"。

oracle sql标准格式

oracle sql标准格式

oracle sql标准格式Oracle SQL的标准格式并没有一个固定的标准,因为SQL的编写风格可以因个人、团队或公司的偏好而异。

然而,有一些通用的最佳实践和格式规范,这些规范可以提高SQL的可读性、可维护性和性能。

以下是一些建议的Oracle SQL标准格式:书写规范大小写一致:关键字、表名、列名等的大小写应保持一致。

通常,表名和列名使用大写,而SQL关键字则使用小写。

关键字单独占一行:例如SELECT, FROM, WHERE, AND, GROUP BY, ORDER BY 等关键字应单独占一行。

行缩进和对齐:建议语句中的关键字右对齐,以提高可读性。

空格使用:在SQL语句的算术运算符、逻辑运算符(如AND, OR, NOT)和比较运算符(如=, <>, <=, >=, BETWEEN, AND)前后应加上空格。

注释:对于复杂的SQL语句,应加上注释以解释算法和功能。

注释应单独成行,并放在语句前面。

单行注释使用--,多行注释使用/* */。

表别名:在多表连接时,使用表的别名来引用列,可以提高查询的可读性。

列和条件单独占行:SELECT 后面的每一列(当列数大于1时)和WHERE 后面的每个条件(当条件数大于1时)应单独占一行。

避免使用SELECT *:应明确指出要查询的字段名,而不是使用*。

性能优化建议简化关键SQL语句:避免包含太多的嵌套,以减少执行计划错误的可能性。

使用表别名:在进行多表连接时,为每个字段的使用都带上表别名。

避免使用INSERT INTO ... VALUES:应指定插入的字段名,而不是直接使用VALUES。

减少不必要的类型转换:避免在WHERE 子句中对索引列进行类型转换。

慎重使用索引:索引可以提高查询性能,但也会降低INSERT 和UPDATE 的性能。

应根据实际情况来创建索引。

避免在WHERE 子句中使用使索引失效的表达式:例如,避免使用<>、NOT、IS NULL、IS NOT NULL、LIKE '%xxxx%' 等。

Oracle数据库操作规范

Oracle数据库操作规范

1命名原则1.1约定ü是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定;ü命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割ü避免使用Oracle的保留字如LEVEL、关键字如TYPE(见Oracle保留字和关键字);ü各表之间相关列名尽量同名;ü除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;ü命名只能使用英文字母,数字和下划线;1.2表名规则如下:命名规则为xxx_yyy_TableName。

xxx表示子系统的名称,由三个字母构成;yyy表示子系统中的子模块的名称(可以没有);TableName为表含义TableName规则如下:ü使用英文单词或词组作为表名,不得使用汉语拼音ü用名词和名词短语作表名ü不使用复数正确的命名,例如:sys_userbiz_order1.3存储过程规则如下:命名规则为xxx_yyy_StoredProcedureName。

xxx表示子系统的名称,由三个字母构成;yyy 表示子系统中的子模块的名称(可以没有);StoredProcedureName为存储过程含义StoredProcedureName规则如下:ü用动词或动词短语来命名,并带有宾语ü需要符合用Pascal 命名规则。

ü尽量谨慎地使用缩写ü尽量不要和关键字重合ü不要用任何名前缀(例如U,B)üStoredProcedureName内不使用下划线ü当操作依赖条件时,一般结尾使用By+条件存储过程正确的命名,例如:sys_InsertUsersys_SearchUserByUserIDsys_DeleteUserByUserID1.4视图规则如下:ü视图的命名采用xxx_yyy_ViewName_v。

oracle常用的SQL及语法

oracle常用的SQL及语法

1、两个oracle 开发工具介绍a)SqlDbx王金生曾推荐过的一款数据库客户端开发工具,使用容易,不需要额外的安装其它插件,有sql提示功能,支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server 和ODBC数据源,免费绿色版。

b)PLSQL Developer专门针对oracle开发的一款比较专业的客户端工具,除了常用的数据库操作外,还支持存储过程及函数的调试功能等比较高级的功能,详细的操作可以安装完毕后大家去慢慢研究。

配置方式见网上找的一段方法,第二种:/view/65b5a80f6c85ec3a87c2c583.html以上提到的工具及可能用到的插件见共享目录中的文件。

2、oracle 与 sqlserver 语法大比较a)oracle各类型字段描述b)字段类型比较c)常用函数比较注:此处仅记录语法有区别的地方,更多丰富的语法请查看附件中的手册。

以下的exp为expression的缩写d)关于脏读目前我们使用的sqlserver 数据库,在查询数据时,都要求在select语句中后面跟一个(nolock)或(with nolock)来保证读取大表时不影响其它程序进程的数据操作。

在oracle中,目前还不允许脏读的方式,在每次select 后,读到的数据都是已经commit的数据,所以为了避免读取数据的不准确,程序中如果有比较耗时的sql 操作,尤其是在insert 和update后,尽量减小事务,而且要在事务结束后及时commit。

e)表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。

主要区别如下:Oracle定义表字段的default属性紧跟字段类型之后,如下:Create table MZ_Ghxx( ghlxh number primay key ,rq date default sysdate not null,….)而不能写成Create table MZ_Ghxx( ghlxh number primay key ,rq date not null default sysdate,….)f)存储过程/函数结构的不同SQLSERVER中存储过程的结构大致如下CREATE PROCEDURE procedure_name/*输入、输出参数的声明部分*/ASDECLARE/*局部变量的声明部分*/BEGIN/*主体SQL语句部分*//*游标声明、使用语句在此部分*/ENDORACLE中存储过程的结构大致如下CREATE OR REPLACE PROCEDURE procedure_name(/*输入、输出参数的声明部分*/ )AS/*局部变量、游标等的声明部分*/BEGIN/*主体SQL语句部分*//*游标使用语句在此部分*/EXCEPTION/*异常处理部分*/END ;ORACLE端FUNCTION语法说明CREATE [OR REPLACE] FUNCTION function_name[(argument [{IN | OUT | IN OUT }] ) type,…[(argument [{IN | OUT | IN OUT }] ) typeRETURN return_type {IS | AS}BEGIN…END;变量赋值在SQL SERVER语句中用如下语句对局部变量赋值(初始值或数据库表的字段值或表达式):“SELECT 局部变量名= 所赋值(初始值或数据库表的字段值或表达式)”;而在ORACLE中,将初始值赋给局部变量时,用如下语句:“局部变量名: = 所赋值(初始值或表达式);”,将检索出的字段值赋给局部变量时,用如下语句:“SELECT 数据库表的字段值INTO 局部变量名…”。

sql表命名规则

sql表命名规则

sql表命名规则SQL表命名规则是数据库设计中的重要部分,它有助于保持数据的清晰、一致和易于理解。

一个好的表名应该简洁、有意义,并且遵循一定的命名规范。

以下是一个关于SQL 表命名规则的介绍,涵盖了常见的命名约定、最佳实践以及一些示例。

一、命名约定1. 使用小写字母:大多数数据库系统对大小写敏感,因此建议使用小写字母来命名表。

这样可以避免在不同系统之间出现大小写不一致的问题。

2. 使用下划线分隔单词:为了提高可读性,建议使用下划线(_)来分隔多个单词。

例如,`users_profile`。

3. 避免使用特殊字符:避免在表名中使用特殊字符,如空格、标点符号等。

特殊字符可能会引起查询错误或混淆。

4. 避免使用保留字:避免使用数据库系统的保留字作为表名。

保留字是数据库系统预定义的、具有特殊意义的词汇,如`SELECT`、`FROM`等。

5. 使用前缀或后缀:为了区分不同的表或表类型,可以使用前缀或后缀来命名表。

例如,`tbl_users`(前缀)或`users_tbl`(后缀)。

二、最佳实践1. 保持简洁:表名应该简洁明了,避免使用过长的名称。

过于复杂的名称会使查询和维护变得困难。

2. 使用有意义的名称:表名应该描述表中存储的数据内容或相关属性。

避免使用无意义或抽象的名称。

3. 避免使用数字或符号:避免在表名中使用数字或符号,除非有特殊需求。

数字和符号可能会使查询变得复杂,并且难以阅读和理解。

4. 使用单数或复数形式:根据数据库系统的语法规则和编程语言的约定,选择使用单数或复数形式来命名表。

确保在整个数据库设计中保持一致。

5. 避免使用下划线开头的名称:在某些数据库系统中,以下划线开头的名称可能会被视为私有字段或隐藏字段。

因此,避免在表名中使用下划线开头。

三、示例以下是一些示例,展示了符合SQL表命名规则的表名:1. 用户信息表:`users_info`2. 产品分类表:`products_categories`3. 订单明细表:`orders_details`4. 员工薪资表:`employees_salaries`5. 客户反馈表:`customer_feedback`这些示例遵循了上述的命名约定和最佳实践,使得表名简洁明了、有意义且易于理解。

oracle sql 查建表语句

oracle sql 查建表语句

一、概述Oracle SQL是一种强大的关系型数据库管理系统,用于管理和操作大规模的数据。

在Oracle SQL中,建表语句是非常重要的一部分,它定义了数据库中表的结构和属性。

本文将介绍如何使用Oracle SQL语言编写建表语句。

二、建表语句基本格式在Oracle SQL中,建表语句的基本格式如下:CREATE TABLE table_name(column1 datatype,column2 datatype,column3 datatype,...);其中,CREATE TABLE是创建表的关键字,table_name是要创建的表的名称,column1、column2、column3等是表的列名,datatype是列的数据类型。

建表语句以分号结尾。

三、建表语句实例下面是一个简单的建表语句实例,用于创建一个名为employee的表,包含id、name和age三个列:CREATE TABLE employee(id NUMBER,name VARCHAR2(50),age NUMBER);在这个例子中,employee是表名,id、name和age分别是表的三个列,它们的数据类型分别是NUMBER和VARCHAR2。

四、建表语句的详细说明1. 列名和数据类型:在建表语句中,首先列出表的列名和对应的数据类型。

列名是用于标识每一列的名称,而数据类型则指定了列中可以存储的数据类型,例如数字、文本、日期等。

2. 约束条件:在建表语句中,还可以定义列的约束条件,包括主键约束、唯一约束、非空约束、外键约束等。

约束条件可以确保数据的完整性和一致性。

3. 默认值:建表语句还可以指定列的默认值,当插入数据时,如果没有指定该列的数值,则会采用默认值。

4. 外键关系:通过建表语句,还可以定义表与表之间的外键关系,以确保数据的一致性和完整性。

五、建表语句的注意事项在编写建表语句时,需要注意以下几点:1. 命名规范:表名、列名等命名需要符合数据库命名规范,通常采用大写字母、下划线等格式。

oracle plsql sql美化规则

oracle plsql sql美化规则

Oracle PL/SQL的SQL美化规则可以通过使用一些工具和规范来定义。

以下是一些常见的规则和规范:
缩进和空格:使用一致的缩进风格,通常使用2个或4个空格进行缩进。

在关键字、标识符和操作符周围使用空格,使代码更易读。

换行:在长查询或语句中合理换行,以提高可读性。

例如,每个子句应该单独一行。

命名规范:使用有意义的标识符命名,如使用下划线分隔的单词,避免使用保留字。

注释:添加必要的注释以解释复杂的查询或逻辑。

注释应该简洁明了,并放在需要解释的代码行的上方或下方。

SQL语句:使用完整的SQL语句,而不是缩写或简写。

例如,使用SELECT * FROM 而非简单的SELECT。

关键字和保留字:使用正确的关键字和保留字,避免使用同义词或替代词。

数据类型:确保数据类型正确匹配,避免隐式转换或强制转换。

索引和优化:合理使用索引,以提高查询性能。

避免在查询中使用不必要的函数或操作符,这可能会影响索引的使用。

异常处理:使用异常处理机制来捕获和处理错误和异常情况。

代码复用:避免重复编写相同的代码,使用存储过程、函数、包等来复用代码。

参数化查询:在使用动态SQL时,使用参数化查询以避免SQL注入攻击和提高性能。

这些规则可以通过PL/SQL编辑器中的美化器或代码格式化工具来应用。

这些工具可以根据定义的规则自动美化代码,使其更易于阅读和维护。

Oracle下SQL编程标准

Oracle下SQL编程标准

1.视图利用标准视图的命名规那么1、视图名用V_开头,视图名长度不能超过30个字符。

视图名用大写的英文单词来表示。

2、视图由几个表产生就用下划线(_)连接几个表的名,若是表过量能够将表名适当简化,但必然要列出所有表名。

必需在视图中指定每列名称的情形1、视图中有任何从算术表达式、内置函数或常量派生出的列。

2、视图中两列或多列具有相同名称(通常由于视图概念包括联接,而来自两个或多个不同表的列具有相同的名称)。

3、希望使视图中的列名与它的源列名不同。

(也能够在视图中重命名列。

)不管重命名与否,视图列都会继承其源列的数据类型。

其他1、不能将AFTER触发器与视图相关联,只有INSTEAD OF触发器能够与之相关联。

2、概念视图的查询不能够包括ORDER BY、COMPUTE或COMPUTE BY子句或INTO关键字,不然会占用大量时刻。

3、不能在视图上概念全文索引概念。

4、不能创建临时视图,也不能在临时表上创建视图。

5、不能除去参与到用SCHEMABINDING子句创建的视图中的表或视图,除非该视图已被除去或更改而再也不具有架构绑定。

另外,若是参与具有架构绑定的视图的表执行ALTER TABLE语句阻碍视图概念,那么这些语句将失败。

6、不能对视图执行全文查询,可是若是查询所引用的表被配置为支持全文索引,就能够够在视图概念中包括全文查询。

7、一样不建议试图套视图的建法,一个是逻辑太复杂,第二是若是底层视图发生问题,那级联的所有视图都有问题。

8、对多个表关联的查询成立视图,注意表间关键的字段和条件字段是不是用到索引。

因为视图其实确实是SQL,只只是封装了下,成立一个多表关联而又没有合理利用索引的视图,效率是很低的。

2.触发器利用标准触发器命名标准1、触发器名用Tr_开头,触发器名长度不能超过30个字符。

必需缩写表名,以便附加触发器属性信息。

触发器名用小写的英文单词来表示。

2、触发器利用标准1、触发器的利用,应该放在关键的,多方发起的,高频访问的数据表上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
1.SQL(PL/SQL)编码格式规范
一些第三方开发工具,例如TOAD等,都有比较好的格式化功能,大家可以用 其做风格统一和美化使用,以下是自定义的一套规范,可以供大家参考。


大小写风格
所有数据库的关键字和保留字均使用大写,对象名称、列名称则使用小写。 缩进风格
程序块以及SQL均采取统一的缩进风格书写,保持代码的清晰易懂,风格一致,
ANSI标准写法:使用RIGHT(LEFT) OUTER JOIN ON来实现外连接
SELECT i.first_name, st_name, z.state FROM instructor i RIGHT OUTER JOIN zipcode z ON i.zip = z.zip GROUP BY i.first_name, z.state;
7. FOR UPDATE语句使用注意
FOR UPDATE语句的作用在于并发环境下,某用户将查询到的数据加锁,以
便后续的操作过程中,该数据不会被其他用户所修改,这通常用于一些公共模块的 公共处理场景。
由于锁定操作势必会影响到并发性,所以原则就是尽量把条件限定严格,使
锁定的记录数最少,并且在后续的操作完成后尽快提交或回滚事务,以便其他用户 能尽快得到锁资源。 除特殊原因外,严格禁止不加过滤条件的SELECT语句中使用FOR UPDATE 子句。
多表连接的ANSI写法:
SELECT s.section_no, c.course_no, c.description,i.first_name, st_name FROM course c JOIN section s ON (s.course_no = c.course_no) JOIN instructor i ON (i.instructor_id = s.instructor_id);
10
2.ANSI SQL标准规范
外连接(OUTER JOIN)
ORACLE的方言写法:使用(+)来实现外连接
SELECT i.first_name, st_name, z.state FROM instructor i, zipcode z WHERE i.zip (+) = z.zip GROUP BY i.first_name, st_name, z.state;
缩进格式保持2到4个。缩进使用空格,而不要使用【Tab】键。 当一条SQL中的谓词和子句比较多时,尽量断开成多行,可以采用使子句开头 保持一行的方式,谓词关键字保持右侧对齐,左侧缩进的方式。
3
1.SQL(PL/SQL)编码格式规范
IF flag = 1 THEN SELECT username INTO v_userinfo FROM userinfo WHERE userid = :iuserid; END IF;
2.ANSI SQL标准规范
多表连接的ORACLE方言写法:
SELECT s.section_no, c.course_no, c.description,i.first_name,st_name FROM course c,section s,instructor i WHERE s.course_no = c.course_no AND i.instructor_id = s.instructor_id
8.提交语句(commit)使用的原则
事务设计中,为了保证事务的完整性和有效性必然使用到提交语句。但提交 语句在使用上也有一些需要注意的地方。 必须及时提交。 这主要是针对高并发的联机事务型(OLTP)数据库所考虑的,因为提交会 使本事务所锁定的资源释放给其它事务,以提高并发性。锁的设计是并发联机事 务所必须要考虑的东西,提交操作又是其中最重要的部分之一。 提交的动作不宜过于频繁。 在不违背第一条原则的前提下,提交又不宜过于频繁。比如一些循环语句的 内部。这一点主要是从性能角度所考虑的。因为提交动作本身会使ORACLE后台 产生一系列操作,将会消耗掉很大的系统资源。究竟循环处理多少条做一次提交, 需要做一些对比测试来最终决定,但过于频繁的提交必定会影响整体性能。
SELECT s.first_name, st_name, z.zip, z.city, z.state FROM student s, zipcode z WHERE s.zip = z.zip;
ANSI写法1:
SELECT s.first_name, st_name, z.zip, z.city, z.state FROM student s JOIN zipcode z ON (s.zip=z.zip);
比如,如下的三条SQL,其达到的目的是一样的,但是在ORACLE看来这是三条
完全不同的语句,所以要进行三次硬解析。 select * from employees where department_id = 60; SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID = 60; select /*+ PARALLEL */ * from employees where department_id = 60; 对于联机交易型系统来说,SQL的软解析率是非常关注的一个指标。而引起 SQL不能共享的主要因素包括:大小写、空格、注释、提示等。
直接截断表的空间存储与表定义之间的关系。 因为是字典一级的操作,所以速度会非常快,而且无论表记录数的多少,正 常情况下TRUNCATE语句都会在数秒内完成。但要注意其与DELETE操作的区别 是不需要提交操作,且无法回滚。 TRUNCATE操作可以针对表以及表分区级,在对分区数据做清理时还是非常 有用的。
ORACLE SQL编写规范 v1.1
武明明
2012年11月
技术规划部 数据库组 wumingming@boco
1.SQL(PL/SQL)编码格式规范
统一的SQL编码格式规范不但可以使阅读者感到清晰明了,而且可以最大程度 上避免同一SQL语句在不同地方处理时由于书写格式的不统一,而造成无法共享从 而增加SQL解析负担的问题。

空格及换行 不允许把多个语句写在一行,即一行只写一条语句; 避免将复杂的语句写在同一行,建议在谓词和关键字处换行; 相对独立的程序块之间必须加空行; BEGIN、END独立成行; 太长的表达式应在低优先级操作符处换行,操作符或关键字放在新行之首, 划分出新行应适当地缩进,使排列整齐,语句可读;
1.SQL(PL/SQL)编码格式规范
3.提示(HINT)的书写注意
提示中的+不能少,如果少了,会被优化器当做注释来处理。

提示必须跟在语句的第一个关键字后面,如第二个语句中如果在INTO关键字
后面放置提示的话,将会被优化器忽略。

如需要写多个提示,则可以合在一起,中间使用空格隔开。
ห้องสมุดไป่ตู้
提示中所引用的表如果定义了别名,则提示中必须引用别名,否则该提示也
SELECT * FROM instructor, course;
ANSI写法:
SELECT * FROM instructor CROSS JOIN course;
2.ANSI SQL标准规范
等价连接(EQUI JOIN),也称内连接(INNER JOIN)或规则连接 (REGULAR JOIN),是指表间有等价连接条件的连接方式。 ORACLE方言写法:
2.ANSI SQL标准规范
1989年,美国国家标准协会(ANSI)第一次发布了SQL标准规范,92年被修
订,简称SQL-92,目前这个标准为SQL-99。各主要数据库厂商均宣布支持该标准,
但因历史遗留问题,大多也有一些各自的特性在产品中。如果我们在SQL编写规范 上面做到符合ANSI的标准,在产品向不同的数据库平台移植的过程中就不会遇到 由于某一产品的特殊语法与其他产品不兼容而需要调整的问题。 ORACLE由于早于ANSI有一套SQL语法定义方式,其与ANSI的不同主要体现 在“关联”(JOIN)语句的书写方式上。 一些使用过ORACLE老版本的SQL编码人员还是非常习惯于ORACLE那套老 的书写方式。是否使用ANSI SQL规范并非强制,可以由项目管理人员决定。如果
起不到作用。
4.尽量避免笛卡尔连接
产生笛卡尔连接的原因就是在多张表进行关联的操作中缺少了表间的连接条
件。由于笛卡尔积产生的结果集将是多表记录的乘积关系,因此当哪怕只有一张 表的记录数比较大时,其结果集都将被数倍以上地放大,这势必给数据库性能带
来严重影响。
因此,除一些特殊原因外,要尽量避免笛卡尔连接的产生,也就是说在写关 联语句时要严格检查连接条件是否有遗漏。 请编码及检查人员注意,不带连接条件的多表连接语句是严格禁止的,如果 有则必须要说明原因。
2.ANSI SQL标准规范
ANSI写法2:
SELECT s.first_name, st_name, zip, z.city, z.state FROM student s JOIN zipcode z USING (zip);
注意:
ANSI写法中没有使用WHERE语句列出连接条件,而是使用了ON或者USING 子句。 在使用USING子句的方式中,SELECT语句针对表间连接字段是不能用别名加 限定的,如例中的zip字段。
考虑向不同数据库平台做移植时减少兼容性带来的问题,可以参考一下此规范。
2.ANSI SQL标准规范
为了对比上的清晰,分别列出ORACLE老版本上的书写方式(也称ORACLE
方言)与ANSI规范的主要不同之处。
交叉连接(CROSS JOIN),也称笛卡尔连接,是指不限定关联条件的连接
ORACLE方言写法:
且认真检查所提取的每一个字段都是否有必要将是严谨而避免低效的方法。
INSERT语句中列出具体的字段还有一个好处就是可以避免当表结构发生变 化时产生编译性的错误。
相关文档
最新文档