`
lirig
  • 浏览: 235252 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

技术开发人员SQL规范

阅读更多

 

虽然oracle主要的工作是dba所做的事情,不过作为一个普通的开发人员也时时刻刻和数据库打交道,普通开发人员也得有一些基本数据库技能。下面是我在开发中的一些oracle数据库开发的一些经验。欢迎大家提意见。

  • 表命名规则

表命名是以英文名称为原则,表示该表的具体意义,例如商品表可以叫item,商品图片表可以叫item_image。

如果公司业务复杂,数据库过多,schema也比较多,则要根据schema的来命名,例如:在crm下面可以用crm开头命名CRM_USER.

临时表应该以tmp开头TMP_USER,这样的表一段时间后将会清除。

备份数据使用的表应该使用bak开头,这样的表在被确认不需要后将被清除。

注:表的命名不能超过30个字符 

 

  • 字段命名

表达该字段的含义

不能用oracle中的保留字

注释一定要详细加上,如status 状态,0 有效,1删除

注:字段长度也尽量简化(如crm_test_times_currently,太长)

 

  • 索引的命名规则

主键(primary key)索引

    PK_表名_列名

唯一键(unique key)索引

    UK_表名_列名

普通索引

     IDX_表名_列名

注:索引的命名不能超过30个字符(在索引中的列名可以简写,一般情况下不简写索引中的表名)

  • 过程与函数

过程的命名规则

    以SP_开头,过程中要注解此过程的作者,编写时间,此过程的功能

函数的命名规则

    以FUN_开头,函数中要注解此函数的作者,编写时间,此函数的功能

变量的命名规则

    本地变量以l_开头;

    传递参数:p_变量名_in  (传入)

              p_变量名_out(传出) 

    游标类型cur_开头;

 

  • 序列的命名规则

           序列的命名

    SEQ_表名_列名

    如何在程序中使用序列所产生的值

         INSERT INTO test(id,nick)

                        VALUES(seq_test_id.nextval,'test');

    如何查询序列的当前值:

         select seq_test_id.currval from dual;

 

  • SQL编写规范

SQL语句所有表名,字段名全部小写,SQL保留字大写;

 

select  *查询语句不允许出现,要明确写查询哪些列;

 

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

 

SQL语句注意缩进

where子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐

 

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

sql示例:

SELECT aa.title,aw.bid,aw.closingdate,u.nick

                            FROM t_users u,

                                        t_test tt

                                        t_item aa

                             WHERE u.id = tt.seller

                                   AND tt.id= aa.id

                                   AND u.nick =‘test’;

 

where条件中尽量减少使用常量比较,改用绑定变量 

 

尽量减少order by和group by排序操作 ,有些排序操作可以由应用程序完成

如必须使用排序操作,请遵循如下规则 :

                             1.排序列上有索引

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

                                 union 

 

尽量避免对索引列进行计算,或者对列进行函数操作然后查询 

    例如:

         SELECT t.id FROM test t 

                           WHERE upper(t.nick) = :1

         正确的是:

         SELECT t.id FROM test t 

                            WHERE t.nick = upper(:1)

注意绑定变量与索引列数据类型的一致性

       表test字段id的类型为number

错误的是:

    SELECT  t.subject from test 

                                    WHERE t.id=‘5’; 

    此写法将不会走id字段上的索引,执行计划为全表扫描

正确的是:

    SELECT  t.subject FROM test 

                                    WHERE t.id=5; 

 

分页sql写法

select * from (select t.*,rownum as rn from (select id,name,sex from test order by id desc) t where rownum < 21) where rn >19;

 

适当使用提示优化

select /* + index(a idx_test)*/ count(*) from test a;

提示符很多,有时间整理下和大家讨论讨论

 

 

29
10
分享到:
评论
5 楼 szcjlssx 2010-07-12  
分页SQL?
SELECT SQL_CALC_FOUND_ROWS * FROM table1 LIMIT 0,10; 
SELECT FOUND_ROWS(); --返回上面的语句查询结果行数,但不考虑任何LIMIT语句

……MySQL的LIMIT语法很好用
4 楼 mercyblitz 2010-06-30  
引用
普通索引

     IND_表名_列名



IDX不更好吗?
3 楼 ngmr_8888 2010-06-29  
总结得还挺全乎,顶一顶
2 楼 lirig 2010-06-29  
lanmaokyle 写道
又有时间写博客了?

发现最近脑子不用了,不写出来,很快就忘记了!
1 楼 lanmaokyle 2010-06-29  
又有时间写博客了?

相关推荐

    Transact-SQL编程规范

    本文是笔者通过几年软件开发技术的积累,以及参考相关资料总结的一篇关于T-SQL语言编程规范的文章,旨在为需要这方面资料的IT公司设计开发人员提供一个参考。

    TeradataSQL编写规范

    为了统一软件开发过程中关于SQL...式,使编码人员编写SQL 代码遵从特定的风格,并养成良好的开发习惯,从而增 强代码的可读性,便于交流和维护,特此收集、整理公司已经积累的技术资料, 修订和编制了本编码规范。

    SQL Server 2005 XML应用开发 光盘

    本书可作为各类大专院校、各种成人教育学校和培训班学习SQL Server、XML以及Delphi等课程的专业图书,特别适合具有一定Delphi、SQL Server应用开发经验的读者,也可供Web应用程序开发人员和计算机爱好者学习参考。

    数据库开发设计编程规范.docx

    本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。

    Microsoft SQL Server 2005 Express Edition SP3

    SQL Server Express 是独立软件供应商 (ISV)、服务器用户、非专业开发人员、Web 应用程序开发人员、网站宿主以及客户端应用程序编程爱好者的理想之选。 未及时包括在本自述文件中的任何有关 SQL Server Express 的...

    SQL Server 2008高级程序设计 4/6

     本书面向想要学用所有SQL Server 2008功能的有经验的开发人员。 目录 -------------------------------------------------------------------------------- 第1章 回顾SQL Server中的对象  1.1 数据库的构成 ...

    SQL Server 2008高级程序设计 2/6

     本书面向想要学用所有SQL Server 2008功能的有经验的开发人员。 目录 -------------------------------------------------------------------------------- 第1章 回顾SQL Server中的对象  1.1 数据库的构成 ...

    sql2005全文检索.doc

    它们无非是不断充斥设备和网络的比特而已,但是如何把数据挖掘出来提供给需要的人员,检索技术是其中非常有效的途径之一。  现基于微软平台,针对SQL Server 2005提供的全文检索技术进行介绍。与关系数据查询、多维...

    SQL Server 2008数据库设计与实现

     本书浓缩了作者作为SQL Server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考 目录 第1章 数据库概念简介  1.1 数据库设计阶段  1.1.1 概念阶段  1.1.2 逻辑阶段 ...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:...

    SQL Server 2008 商业智能完美解决方案(3)

    第三部分 Microsoft SQL Server 2008 Integration Services开发人员指南 第14章 Microsoft SQL Server 2008 Integration Services的架构组件 329 14.1 Integration Services架构概述 329 14.2 Integration ...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:...

    前端开发管理规范,需要的同学可自行下载

    研发人员定义为:对于公司启动的一项开发工作,从开始调研到总结结束,整个研发工作过程中参与的所有人员,包含业务调研,开发,测试后期运维的相关人员。 1.2 角色和职责 开发用户界面。与服务端通讯。能够在用户...

    SQLServer2008查询性能优化 2/2

    《SQL Server 2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQL Server 2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程...

    SQLServer2008查询性能优化 1/2

    《SQL Server 2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQL Server 2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程...

    医院管理系统sql数据库.doc

    SQL 目 录 第一章 绪论 5 系统开发背景概述 5 系统开发的目的与意义 5 第二章 数据库需求分析 7 信息要求 7 系统构成 7 数据流图 8 数据字典 8 第三章 数据库概念结构设计 10 第四章 数据库逻辑结构设计 12 关系...

    开发示例现代SQL

    比其他任何开源数据库都实现了更多的标准SQL规范,并在过去几年中增加了对 ,,时和许多其他功能的支持。 以下内容将引导您完成设置以便与MariaDB集成并使用一些现代SQL功能示例的步骤。 目录 环境与相容性 该项目...

    基于JAVA JSP+SQL房屋租赁管理信息系统JDBC的毕业设计,以软件工程理论作为系统开发的理论基础,以客户机/服务器模式的

    随着信息自动化处理技术的日益发展,如何科学,全面,高效的对单位纷繁复杂的档案...本系统以JSP和 SQL为开发工具,通过后台数据库的建立与设置,软件界面的设计与实现,程序的编写与调试等几个阶段来完成对房屋租赁

Global site tag (gtag.js) - Google Analytics