- 浏览: 55473 次
- 性别:
- 来自: 北京
最新评论
虽然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_表名_列名
普通索引
IND_表名_列名
注:索引的命名不能超过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 aw.auction = 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;
提示符很多,有时间整理下和大家讨论讨论
表命名规则
表命名是以英文名称为原则,表示该表的具体意义,例如商品表可以叫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_表名_列名
普通索引
IND_表名_列名
注:索引的命名不能超过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 aw.auction = 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;
提示符很多,有时间整理下和大家讨论讨论
发表评论
-
java.util.SimpleDateFormat String到Date 转换
2010-09-25 10:03 927public class DataFormatCol { ... -
有关Spring AOP的概念理解
2010-07-09 10:51 6101.我所知道的aop ... -
数据库的读写分离
2010-07-09 10:34 827随着一个网站的业务不断扩展,数据不断增加,数据库的压力也会越 ... -
接口和抽象类的区别
2010-07-06 16:21 623请说说接口和抽象类的区别?估计90%的人都答不好 我的答 ... -
java2 核心编程必须掌握的问题,看看你知道多少?
2010-07-06 16:02 656Java2 测试问题列表: 1. 什么叫作抽象? 2. ... -
一个计算机专业学生几年的编程经验汇总(四)
2010-07-06 16:00 615Java杂谈(九)--Struts2 最近 ... -
一个计算机专业学生几年的编程经验汇总(三)
2010-07-06 15:59 599Java杂谈(七)--接口& 组件、容器 ... -
一个计算机专业学生几年的编程经验汇总(二)
2010-07-06 15:58 653Java杂谈(四) 不知不觉已经写到第四篇了 ... -
一个计算机专业学生几年的编程经验汇总(一)
2010-07-06 15:57 549想来学习Java也有两个年头了,永远不敢说多么精通,但也想谈谈 ... -
Java注释规范
2010-07-06 15:02 946定义这个规范的目的是让项目中所有的文档都看起来像一个人 ... -
完全卸载Oracle数据库的方法
2010-06-18 10:11 921很多朋友只用了Oracle的 ... -
Java面试题笔试题大全
2010-05-27 16:43 1172java面试题集 1.C++ ... -
JAVA面试题附答案(三)
2010-05-27 16:41 931101、java中会存在内存泄漏吗,请简单描述。 会。如 ... -
JAVA面试题附答案(二)
2010-05-27 16:37 84351、垃圾回收的优点 ... -
JAVA面试题附答案(一)
2010-05-27 16:31 9851、面向对象的特征有哪些方面 1.抽象: 抽象就是 ... -
Java经典面试题
2010-05-27 16:30 13171. Java中的异常处理机制 ... -
Java面试经典试题及答案
2010-05-27 16:29 1314第一,谈谈final, finally, finalize的区 ... -
Web容器和Web应用程序介绍
2010-05-27 09:40 1122http://hi.baidu.com/westsky/blo ... -
11本入门到精通J2EE书籍推荐
2010-05-14 17:00 2196这些书有的早已被业界人士强烈推荐,成为掌握EJB的必读书籍, ... -
JAVA JVM GC的工作原理
2010-05-14 16:59 1039一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的 ...
相关推荐
本文是笔者通过几年软件开发技术的积累,以及参考相关资料总结的一篇关于T-SQL语言编程规范的文章,旨在为需要这方面资料的IT公司设计开发人员提供一个参考。
为了统一软件开发过程中关于SQL...式,使编码人员编写SQL 代码遵从特定的风格,并养成良好的开发习惯,从而增 强代码的可读性,便于交流和维护,特此收集、整理公司已经积累的技术资料, 修订和编制了本编码规范。
本书可作为各类大专院校、各种成人教育学校和培训班学习SQL Server、XML以及Delphi等课程的专业图书,特别适合具有一定Delphi、SQL Server应用开发经验的读者,也可供Web应用程序开发人员和计算机爱好者学习参考。
本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。
SQL Server Express 是独立软件供应商 (ISV)、服务器用户、非专业开发人员、Web 应用程序开发人员、网站宿主以及客户端应用程序编程爱好者的理想之选。 未及时包括在本自述文件中的任何有关 SQL Server Express 的...
本书面向想要学用所有SQL Server 2008功能的有经验的开发人员。 目录 -------------------------------------------------------------------------------- 第1章 回顾SQL Server中的对象 1.1 数据库的构成 ...
本书面向想要学用所有SQL Server 2008功能的有经验的开发人员。 目录 -------------------------------------------------------------------------------- 第1章 回顾SQL Server中的对象 1.1 数据库的构成 ...
它们无非是不断充斥设备和网络的比特而已,但是如何把数据挖掘出来提供给需要的人员,检索技术是其中非常有效的途径之一。 现基于微软平台,针对SQL Server 2005提供的全文检索技术进行介绍。与关系数据查询、多维...
本书浓缩了作者作为SQL Server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考 目录 第1章 数据库概念简介 1.1 数据库设计阶段 1.1.1 概念阶段 1.1.2 逻辑阶段 ...
《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《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版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 作者简介 作者:...
研发人员定义为:对于公司启动的一项开发工作,从开始调研到总结结束,整个研发工作过程中参与的所有人员,包含业务调研,开发,测试后期运维的相关人员。 1.2 角色和职责 开发用户界面。与服务端通讯。能够在用户...
《SQL Server 2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQL Server 2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程...
《SQL Server 2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQL Server 2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程...
SQL 目 录 第一章 绪论 5 系统开发背景概述 5 系统开发的目的与意义 5 第二章 数据库需求分析 7 信息要求 7 系统构成 7 数据流图 8 数据字典 8 第三章 数据库概念结构设计 10 第四章 数据库逻辑结构设计 12 关系...
比其他任何开源数据库都实现了更多的标准SQL规范,并在过去几年中增加了对 ,,时和许多其他功能的支持。 以下内容将引导您完成设置以便与MariaDB集成并使用一些现代SQL功能示例的步骤。 目录 环境与相容性 该项目...
随着信息自动化处理技术的日益发展,如何科学,全面,高效的对单位纷繁复杂的档案...本系统以JSP和 SQL为开发工具,通过后台数据库的建立与设置,软件界面的设计与实现,程序的编写与调试等几个阶段来完成对房屋租赁