文档库 最新最全的文档下载
当前位置:文档库 › ORACLE编码规范

ORACLE编码规范

ORACLE编码规范
ORACLE编码规范

ORACLE编码规范

ORACLE编码规范技巧 (1)

修改历史记录 (2)

文件变更记录 (2)

一、ORACLE数据库使用技巧 (4)

1.别名使用 (4)

2.强制使用索引 (4)

3.并行查询效率可以提高 (4)

4.分区表 (4)

5.动态绑定 (6)

二、ORACLE数据库程序命名规范 (7)

1.包含ORACLE各种对象模式,表、视图、存储过程、函数、包的命名等,总体

原则 (7)

2.表空间命名创建 (8)

3.表命名规则 (8)

4.视图命名规则 (9)

5.字段命名规则 (9)

6.键、约束、索引命名规则 (9)

7.触发器命名规范 (10)

8.序列命名规范 (10)

9.包命名规范 (10)

10.存储过程命名规范 (11)

11.函数命名规范 (11)

12.变量命名规范 (11)

三、ORACLE数据库程序编码规范 (12)

1.代码注释规范 (12)

2.SQL语句规范 (13)

3.游标规范 (13)

4.逻辑语句编写规范 (14)

5.PL/SQL异常处理规范 (15)

6.后台验证异常信息规范 (15)

7.ORACLE常见异常 (16)

修改历史记录

文件变更记录

A-增加M-修改D-删除

编写目的:开发人员使用统一的命名和编码规范,使数据库对象命名及编码风格标准化,可增加程序的可读性,增强系统的可维护性,提高软件的质量。

基本规则:

?关键字尽量大写

?如果写脚本、过程、触发器时保留字尽量另起一行左对齐

?表名、视图、索引名统一大写

?预置函数、数据类型统一大写

一、ORACLE数据库使用技巧

1.别名使用

2.强制使用索引

3.并行查询,效率可以提高

第一种形式

第二种形式

4.分区表

当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。

什么时候使用分区表:

1、表的大小超过2GB。

2、表中包含历史数据,新的数据被增加到新的分区中。

分区表的常用创建形式:

必须有相应表空间:

a.范围分区(RANGE)

b.列表分区

(LIST)

c.散列分区(HASH哈希)

5.动态绑定

6.逻辑分表,大表分成若干小表

假设一个表的数据有2千万行,我们可以针对这样给划分成5个逻辑分表,每个分为500万行的数据,对于历史数据我们可以分成这样的表来操作,例如一年12个月每个月都可以创建一个表.

orderr_01

...

order_12;

这样一个大表就可以有效的分成12个表的操作,尤其可以按时间或者按地域划分的都可以这样操作。

可以创建视图连接多张表:

CREATE VIEW v_union_reginfo

AS

SELECT *FROM reginfo

UNION ALL

SELECT *FROM reginfo_temp

union all ,union,Minus,INTERSECT 比较

其中union all 效率最好

Union

集合并,不包含重复行Union all 集合并,可以包含重复行

Minus 集合差,不包含重复行INTERSECT 集合交,不包含重复行

没有主键SELECT COUNT (1)FROM stuinfo;

要快一些。

7.索引和SQL性能优化

a.索引现场举例:

1.不是用索引的情况,如果在字段regtime上创建了索引:

SELECT*FROM reginfo WHERE to_char(regtime,'yyyy-mm-dd')='2010-01-01';

这时候上面语句就没有走索引.

换成如下语句:

SELECT*FROM reginfo WHERE regtime=to_date('2010-01-01','yyyy-mm-dd');

效果就好些.

或者创建函数索引.

CREATE INDEX index_abc ON reginfo(to_char(regtime,'yyyy-mmdd'));

2.in语句的使用,in语句走的全表扫描

SELECT*FROM reginfo a WHERE a.regid

IN(SELECT b.regid FROM reginfo_temp b)

正确的写法一:

SELECT*FROM reginfo a

WHERE EXISTS(SELECT1FROM reginfo_temp b WHERE a.regid=b.regid)

正确写法二:

SELECT a.regid,a.regnick FROM reginfo a

INNER JOIN reginfo_temp b ON a.regid=b.regid

正确写法三早期sql写法:

SELECT a.regid,a.regnick FROM reginfo a,reginfo_temp b

WHERE a.regid=b.regid

3.!=运算符的使用.

不适用索引

SELECT*FROM reginfo WHERE regid!=8

使用索引

SELECT*FROM reginfo WHERE regid>8OR regid<8

4.不要在索引列上使用运算

例如以下情况:

SELECT*FROM temp_stuinfo WHERE substr(stu_name,1,1)='张';

b.组合索引(索引字段最好不超过三个)

组合索引举例:

如果我们在查询中使用两列作为条件,就可以创建组合索引CREATE INDEX index_com ON

reginfo(regnick,regtime)

例子:

SELECT*FROM reginfo WHERE regnick='张三'AND regtime=to_date('2010-1-1','yyyy-mm-dd');使用了索引index_com

SELECT*FROM reginfo WHERE regnick='张三'也使用了索引index_com

如果我们在regnick和regtime上面分别创建了单列索引,通过联合查询后,效率也没有组合索引好些。

如果下查询

SELECT*FROM reginfo WHERE regtime=to_date('2010-1-1','yyyy-mm-dd')

这时使用了组合索引的第二个字段,但是oracle9i以后就使用了跳跃式索引,如果加上优化就是用了跳跃式索引:

例子:

SELECT/*+index(reginfo index_com)*/*FROM reginfo WHERE regtime=to_date('2010-1-1','yyyy-mm-dd');

跳跃索引比全表扫描也快,但是要慢于单列索引,所以有必要创建单列索引在此列上。

c.like使用(%百分号的位置)

不使用索引情况:

SELECT*FROM temp_stuinfo WHERE stu_add LIKE'%河南%';

使用索引情况

SELECT*FROM temp_stuinfo WHERE stu_add LIKE'河南%';

可以使用oracle函数instr代替like加快查询速度:

SELECT*FROM temp_stuinfo WHERE instr(stu_add,'南')>0;

d.nvl相同索引列不能互相比较

不使用索引的情况:

SELECT*FROM reginfo WHERE regnick=nvl(regnick,'张三');

使用索引的情况

SELECT*FROM reginfo WHERE regnick LIKE nvl(regnick,'%');

8.临时表

当处理数据频繁操作时,并且作为平台是,就可以使用临时表,事务临时表一旦处理完毕,就会删除表内数据。1用的多的是事务级临时表

如何创建:

CREATE GLOBAL TEMPORARY tableA

(

t_id INT

)

ON COMMIT DELETE Rows 2也可以自己创建临时表

如果在创建一个临时表的历史表,就可以把临时表的数据通过触发器移到临时表的历史表中,也可以显示的在程序代码中体现,删除临时表数据到临时表的历史表中去。

二、ORACLE 数据库程序命名规范

1.包含ORACLE 各种对象模式,表、视图、存储过程、函数、包的命名等,总体原则.

a.只能包含A-Z,0-9,#,$等。

b.不能使用ORACLE 保留字、关键字.

例如:

如果一定得用DATE 当字段名,需要加双引号

.

查询语句如下:

2.表空间命名创建

a.临时表空间创建

b.回滚段表空间

c.创建用户表空间

3.表命名规则

d.根据表属于不同的功能模块划分

e.

临时表创建

4.视图命名规范

5.字段命名规则

6.键、约束、索引命名规则

7.触发器命名规范

触发器命名格式:

TRG_<表名>#

TRG 表示触发器。

I ,U ,D 分别表示INSERT 、UPDATE 和DELETE

动作。

表名为触发器作用的表名。

触发器例子:

CREATE OR REPLACE TRIGGER trg_reginfo

AFTER UPDATE OF regnick ON reginfo

FOR EACH ROW

BEGIN

dbms_output.put_line('hello');

END ;

/

8.序列命名规范

序列的命名为格式:SEQ_<字段名>

9.包命名规范

包的命名为格式:PKG_<包标识>。

创建包头:

CREATE OR REPLACE PACKAGE pkg_p1

AS

PROCEDURE proc_p1;

FUNCTION fun_f1(vregid NUMBER )RETURN NUMBER ;

END pkg_p1;

创建包体:

CREATE OR REPLACE PACKAGE BODY pkg_p1

AS

PROCEDURE proc_p1

AS

vnum number :=10;

BEGIN

IF vnum <20THEN

RAISE_APPLICATION_ERROR(-20011,'你输得数字太小!!!');

ELSE

dbms_output.put_line('A');

END IF ;

END proc_p1;

FUNCTION fun_f1(vregid NUMBER )

RETURN NUMBER

AS

vregid2NUMBER

;

BEGIN

SELECT regid INTO vregid2FROM reginfo WHERE regid=vregid;

RETURN vregid2;

END fun_f1;

END pkg_p1;

Java调用包内的存储过程:

public void Call(){

Session session=Hiunit.getSession();

Connection conn=session.connection();

System.out.println(conn+"");

try{

CallableStatement cs=conn.prepareCall("{call pkg_p1.proc_p1()}");

//cs.registerOutParameter(1,Types.VARCHAR);

cs.executeUpdate();

//System.out.println(cs.getString(1));

}catch(SQLException e){

System.out.println(e.getMessage());

}

}

Java调用包内函数

public void Call(){

Session session=Hiunit.getSession();

Connection conn=session.connection();

System.out.println(conn+"");

try{

CallableStatement cs=conn.prepareCall("{?=call pkg_p1.fun_f1(?)}");

cs.registerOutParameter(1,Types.NUMERIC);

cs.setObject(2,2);

cs.executeUpdate();

System.out.println(cs.getString(1));

}catch(SQLException e){

System.out.println(e.getMessage());

}

}

带输出游标的包的创建

CREATE OR REPLACE PACKAGE pkg_p2

AS

TYPE refcursor IS REF CURSOR;

PROCEDURE proc_pget(vregid NUMBER,vreginfo OUT refcursor);

END pkg_p2;

带输出游标的包体的创建

CREATE OR REPLACE PACKAGE BODY pkg_p2

AS

PROCEDURE proc_pget(vregid NUMBER,vreginfo OUT refcursor)

AS

vreg VARCHAR(200);

BEGIN

vreg:='SELECT regid,regnick,regtime FROM reginfo WHERE regid=:vregid';

OPEN vreginfo FOR vreg USING vregid;

END proc_pget;

END pkg_p2;

Java如何调用包内的存储过程(包含输出游标)

public void Call(){

Session session=Hi.getSession();

Connection conn=session.connection();

System.out.println(conn+"");

try{

CallableStatement cs=conn

.prepareCall("{call pkg_p2.proc_pget(?,?)}");

cs.setInt(1,6);

cs.registerOutParameter(2,OracleTypes.CURSOR);

cs.executeUpdate();

ResultSet res=(ResultSet)cs.getObject(2);

while(res.next()){

System.out.println(res.getString(2));

}

}catch(SQLException e){

System.out.println(e.getMessage());

}

}

Oracle错误处理

10.Oracle

10.

没使用异常的情况:

DECLARE

vregnick VARCHAR2(20);

BEGIN

SELECT regnick INTO vregnick FROM reginfo;

END;

预定义异常:捕获预定义异常后,抛出结果。DECLARE

vregnick VARCHAR2(20);

BEGIN

SELECT regnick INTO vregnick FROM reginfo;

EXCEPTION

WHEN too_many_rows THEN

dbms_output.put_line('行数过多!!!');

END;

自定义异常:如果出错,抛出自定义异常。DECLARE

vid INT:=10;

verrors EXCEPTION;

BEGIN

IF'&vid'<20THEN

RAISE verrors;

ELSE

dbms_output.put_line('输入正好!!!');

END IF;

EXCEPTION

WHEN verrors THEN

dbms_output.put_line('输入的数字过小');

END;

引用应用程序错误

CREATE OR REPLACE PROCEDURE sec_http

IS

BEGIN

IF TO_CHAR(SYSDATE,'HH24:MI')NOT BETWEEN'08:00'AND'18:00' OR TO_CHAR(SYSDATE,'DY')IN('SAT','SUN')THEN

RAISE_APPLICATION_ERROR(-20205,

'You may only make changes during normal office hours');

END IF;

END sec_emp;

11.存储过程命名规范

存储过程的命名为格式:PRO_<存储过程标识>

存储过程例子:

CREATE OR REPLACE Procedure p_test

AS

la INT :=10;

BEGIN

IF la<20THEN

raise_application_error(-20008,'对不起你输入的过小');

ELSE

dbms_output.put_line('OK!!!');

END IF ;

END ;

Java 调用存储过程捕获异常后的处理:

public void Call(){

Session session =Hiunit.getSession ();

Connection conn =session.connection();

System.out .println(conn +"");

try {

CallableStatement

cs =conn.prepareCall("{call

p_test()}");cs.execute();

}catch (SQLException e){

int x = e.getMessage().indexOf("RBA-");

if (x ==0){

System.out .println("aa");

}else {

System.out .println("bb");

}

}

}

带输出参数的存储过程规范:

CREATE OR REPLACE PROCEDURE pp_test1(outerror OUT NUMBER ,outmessage OUT VARCHAR

)

AS

vl1INT :=10;

BEGIN

IF vl1<20THEN

outerror:=-10;

outmessage:='输入数目太小';

ELSE

outerror:=1;

outmessage:='OK!!';

END IF ;

END ;

Java 调用存储过程得到结果值的处理

public void Call(){

Session session =Hiunit.getSession ();

Connection conn =session.connection();

System.out .println(conn +"");

try {

CallableStatement cs =conn.prepareCall("{call

pp_test1(?,?)}");

cs.registerOutParameter(1,Types.NUMERIC );

cs.registerOutParameter(2,Types.VARCHAR );

cs.executeUpdate();

System.out .println(cs.getString(1));

System.out .println(cs.getString(2));

}catch (SQLException e){e.printStackTrace();

}

}

12.函数命名规范

函数的命名为格式:FUN_<函数标识>

创建函数规范:

CREATE OR REPLACE FUNCTION

fun_hello

RETURN VARCHAR2

IS

BEGIN

RETURN'hello';

END;

/

Java调用函数例子:

public void Call(){

Session session=Hiunit.getSession();

Connection conn=session.connection();

System.out.println(conn+"");

try{

CallableStatement cs=conn.prepareCall("{?=call fun_hello()}");

cs.registerOutParameter(1,Types.VARCHAR);

cs.executeUpdate();

System.out.println(cs.getString(1));

}catch(SQLException e){

e.printStackTrace();

}

}

13.变量命名规范

变量名使用下划线连接方式。

一般变量命名规则:<作用域><变量类型>_<描述>。

a.作用域:变量的作用域,I_输入参数名,O_输出参数名,IO_输

入输出参数名,L表示本地量.

b.变量类型:使用两位缩写,如

VC(VCHAR2),CH(CHAR),NU(NUMBER),DT(DATE),CON_常量名等,用于存取表中数据的变量,类型定义要与表中对应列数据类型一致。

ORACLE数据库设计规范

1命名原则 1.1约定 u是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定; U命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割 u避免使用Oracle的保留字如LEVEL、关键字如TYPE (见Oracle保留字和关键字); u各表之间相关列名尽量同名; u除数据库名称长度为1 — 8个字符,其余为1 — 30个字符,Database link 名称也不要超过30个字符; u命名只能使用英文字母,数字和下划线; 1.2表名 规则如下: 命名规则为xxx_yyy_TableName 。xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy 表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;TableName 为表含义,最多十个字母构成,尽量用简称 TableName 规则如下: u使用英文单词或词组作为表名,不得使用汉语拼音 u用名词和名词短语作表名 u不使用复数 正确的命名,例如: fiber_sys_user fiber_biz_order 1.3存储过程 规则如下: 命名规则为xxx_yyy_StoredProcedureName 。xxx表示开发公司的名称,最多五个字母构成,尽量用 简称;yyy表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;

StoredProcedureName 规则如下: u用动词或动词短语来命名,并带有宾语 u需要符合用Pascal命名规则。 u尽量谨慎地使用缩写 u尽量不要和关键字重合 u不要用任何名前缀(例如U , B) u StoredProcedureName 内不使用下划线 u当操作依赖条件时,一般结尾使用By+条件 存储过程正确的命名,例如: sys_lnsertUser sys_SearchUserByUserlD sys_DeleteUserByUserlD 1.4视图 规则如下: u视图的命名采用xxx_yyy_ ViewName_v 。xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;_v后缀表示视图, ViewName 部分表示视图的含义,最多十个字母构成,尽量用简称。 ViewName 规则如下: u用名词和名词短语, u不使用复数 u用Pascal命名规则 u尽量谨慎地使用缩写 u尽量不要和关键字重合 u不要用任何名前缀(例如U,B) u ViewName 中使用下划线 视图正确的命名,例如:

软件工程-数据库设计规范与命名规则

数据库设计规范、技巧与命名规范 一、数据库设计过程 数据库技术是信息资源管理最有效的手段。 数据库设计是指:对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据, 满足用户信息要求和处理要求。 数据库设计的各阶段: A、需求分析阶段:综合各个用户的应用需求(现实世界的需求)。 B、在概念设计阶段:形成独立于机器和各DBMS产品的概念模式(信息世界模型),用E-R图来描述。 C、在逻辑设计阶段:将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。 然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。 D、在物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。 1. 需求分析阶段 需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。 需求分析的重点:调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。 需求分析的方法:调查组织机构情况、各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界。 常用的调查方法有:跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录。 分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析方法(Structured Analysis, 简称SA方法)从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并把每一层用数据流图和数据字典描述。 数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。 2. 概念结构设计阶段 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。 概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一 DBMS 支持的特定数据模型。 概念模型特点: (1) 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。 (2) 应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。 概念模型设计的一种常用方法为IDEF1X方法,它就是把实体-联系方法应用到语义数据模型中的一种语义模型化技术, 用于建立系统信息模型。 使用IDEF1X方法创建E-R模型的步骤如下所示:

Oracle数据库数据对象分析_张达宇

Oracle数据库数据对象分析 日期:2006-01-18 08:00 点击: Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表 表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如: 这样我们就建立了一个名为products的表,关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。 在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。 在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。 下列数据字典视图提供表和表的列的信息: . DBA_TABLES . DBA_ALL_TABLES . USER_TABLES . USER_ALL_TABLES . ALL_TABLES . ALL_ALL_TABLES . DBA_TAB_COLUMNS . USER_TAB_COLUMNS . ALL_TAB_COLUMNS 表的命名规则 表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数

数据库设计规范

数据库设计规范 V 1.0 2007-8-28

目录 1) 目的 (3) 2) 范围 (3) 3) 术语 (3) 4) 设计概要 (3) 5) 命名规范(逻辑对象) (4) 6) 数据库对象命名 (6) 7) 脚本注释 (8) 8) 数据库操作原则 (9) 9) 常用字段命名(参考) (9)

1) 目的 为了统一公司软件开发的设计过程中关于数据库设计时的命名规范和具体工作时的编程规范,便于交流和维护,特制定此规范。 2) 范围 本规范适用于开发组全体人员,作用于软件项目开发的数据库设计、维护阶段。 3) 术语 数据库对象:在数据库软件开发中,数据库服务器端涉及的对象包括物理结构和逻辑结构的对象。 物理结构对象:是指设备管理元素,包括数据文件和事务日志文件的名称、大小、目录规划、所在的服务器计算极名称、镜像等,应该有具体的配置规划。一般对数据库服务器物理设备的管理规程,在整个项目/产品的概要设计阶段予以规划。 逻辑结构对象:是指数据库对象的管理元素,包括数据库名称、表空间、表、字段/域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据库配置有关的设计以及数据库中其他特性处理相关的设计等。 4) 设计概要 ?设计环境 数据库:ORACLE 9i 、MS SQL SERVER 2000 等 操作系统:LINUX 7.1以上版本,显示图形操作界面; RedHat 9 以上版本 WINDOWS 2000 SERVER 以上 ?设计使用工具 使用PowerDesigner 做为数据库的设计工具,要求为主要字段做详尽说 明。对于SQL Server 尽量使用企业管理器对数据库进行设计,并且要求 对表,字段编写详细的说明(这些将作为扩展属性存入SQL Server中) 通过PowerDesigner 定制word格式报表,并导出word文档,作为数据 字典保存。(PowerDesigner v10 才具有定制导出word格式报表的功能)。

oracle数据库安装及其配置规范标准v0

Oracle数据库系统安装及配置规范 2015-10

目录 1. 数据库物理设计原则 (5) 1.1. 数据库环境配置原则 (5) 1.1.1. 操作系统环境 (5) 1.1.2. 内存要求 (5) 1.1.3. 交换区设计 (5) 1.1.4. 其他 (6) 1.2. 数据库设计原则 (6) 1.2.1. 数据库SID (6) 1.2.2. 数据库全局名 (6) 1.2.3. 数据库类型选择 (6) 1.2.4. 数据库连接类型选择 (7) 1.2.5. 数据库SGA配置 (7) 1.2.6. 数据库字符集选择 (8) 1.2.7. 数据库其他参数配置 (9) 1.2.8. 数据库控制文件配置 (9) 1.2.9. 数据库日志文件配置 (10) 1.2.10. 数据库回滚段配置 (10) 1.2.11. 数据库临时段表空间配置 (11) 1.2.12. 数据库系统表空间配置 (11) 1.3. 数据库表空间设计原则 (11) 1.3.1. 表空间大小定义原则 (11) 1.3.2. 表空间扩展性设计原则 (12) 1.4. 裸设备的使用 (12) 2. 数据库逻辑设计原则 (13) 2.1. 命名规范 (13) 2.1.1. 表属性规范 (13) 2.1.2. 索引 (14) 2.1.3. 视图 (15) 2.1.4. 实体化视图 (15) 2.1.5. 存储过程 (15) 2.1.6. 触发器 (15) 2.1.7. 函数 (16) 2.1.8. 数据包 (16) 2.1.9. 序列 (16) 2.1.10. 表空间 (16) 2.1.11. 数据文件 (16) 2.1.12. 普通变量 (16) 2.1.13. 游标变量 (17) 2.1.14. 记录型变量 (17) 2.1.15. 表类型变量 (17)

oracle数据库试题

ORACLE数据库试题 74 姓名:戴希引 一、选择题(总分50分,每题1分,*为多选)42 1.下列不属于ORACLE的逻辑结构的是(C) A 区 B 段 C 数据文件 D表空间 2. 下面哪个用户不是ORACLE缺省安装后就存在的用户( A ) A . SYSDBA B. SYSTEM C. SCOTT D. SYS 3 下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A ) A 授予了CONNECT的角色,但没有授予RESOURCE的角色 B没有授予用户系统管理员的角色 C数据库实例没有启动 D数据库监听没有启动 4. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是( C ) A 游标打开 B游标关闭 C当前记录的数据加载到变量中 D创建变量保存当前记录的数据 5. 在Oracle中,下面关于函数描述正确的是( A D)* A SYSDATE函数返回Oracle服务器的日期和时间 B ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数 C ADD_MONTHS日期函数返回指定两个月份天数的和 D SUBSTR函数从字符串指定的位置返回指定长度的子串 6. 阅读下面的PL/SQL程序块: BEGIN INSERT INTO employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fre d ’); SAVEPOINT save_a; INSERT INTO employee(salary,last_name,first_name) VALUES(40000,’Woo’,'David’); SAVEPOINT save_b; DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c; INSERT INTO employee(salary,last_name,first_name) VALUES(25000,’Lee’,'Bert’); ROLLBACK TO SAVEPOINT save_c;

浅谈对的理解对象—关系型数据库

浅谈对对象—关系型数据库的理解 姓名:杨小敏 学号:2010206190026

针对对象—关系型数据库的理解我想结合自己的专业(地图学与地理信息系统)从下面三个方面来理解:(1)关系型数据的发展以及在空间数据管理方面的优缺点(2)面向对象数据库的发展及在空间数据管理方面的优缺点(3)关系型数据库和面向对象技术的融合在数据库发展中所起到的独特作用在我们GIS专业领域内,随着信息技术的发展,各种应用系统建设的不断深入,像现在面向21世纪的应急应用系统的建设、城市基础地理空间信息数据库系统与共享平台的建设、地理信息公共服务平台的建设,小到“数字城市”的建设,大到“数字地球”乃至“智慧地球”的建设,我们已经开始不满足数值和文字的信息处理,为了达到系统建设平台尤其是公共服务平台的建设起到良好的客户友好体验,大量的图形信息,音频信息已经深入到数据库的设计中,其中尤其是空间数据库管理备受瞩目。所以,面对信息爆炸的21世纪,海量数据的存储和管路已经不是传统的数据库能解决的,空间数据管理需要更强的数据库——对象关系型数据库。 为什么空间数据需要对象关系型数据库的管理才更有效?我想简单的说一下GIS空间数据的基本特征:(1)空间特征:每个空间对象都具有空间坐标,所以在存储空间数据的同时我们要考虑数据的空间分布特征;(2)非结构化特征:通用数据库或者是传统数据库数据记录一般是结构化的,在面对空间图形信息的时候难以直接采用关系数据管理系统;(3)空间关系特征:空间数据的空间关系最重要的就是空间拓扑关系,这种拓扑结构方便了空间数据的查询和空间分析,但是给空间数据的一致性和完整性的维护增加了复杂性;(4)海量数据的特征:数据库在面对海量数据的存储和组织时,一般在二维空间上划分块或图幅,在垂直的方向上划分层在组织海量空间数据。 在空间数据的管理技术的发展中,从手工管理管理阶段到文件管理阶段再到数据库管理阶段,在三个数据管理阶段,对数据管理方式也不尽相同,在这里,我想说的是空间数据库的发展历史对空间数据管理的影响,第一是层次关系型数据库:只是数据库发展的初级阶段,这是空间数据的管理大多用文件方式管理,很显然不适合管理海量的空间数据,所以淘汰;第二是网络关系型数据库:在一定程度上解决了空间数据复杂管理的难题,但还是被日益崛起的关系型数据库所淘汰;第三是关系型数据库的发展:为了解决难于保证数据的完整性,开始将空

ORACLE编码规范

密级:内部公开 文档编号:NTT_SD_OBMGF 版本号:V1.0 ORACLE编码规范 惠州市新中新电子技术开发有限公司 ------------------------------------------------------------------------------------------------------ 惠州市新中新电子技术开发有限公司对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何 第三方,或进行修改后使用。

文件更改摘要:

目录 1.前提 (6) 2.英文使用原则 (6) 3.逻辑对象的定义规范 (6) 3.1. ORACLE表空间定义 (6) 3.1.1.原则 (6) 3.1.2.命名 (6) 3.2. ORACLE数据文件 (7) 3.2.1.数据文件的存放 (7) 3.2.2.数据文件的命名 (7) 3.2.3.数据文件的大小 (7) 3.2.4.数据文件属性 (7) 3.3. 用户管理 (7) 3.3.1.用户创建 (7) 3.3.2.用户授权 (7) 3.3.3.密码管理 (8) 3.3.4.用户命名规范 (8) 3.4. 表定义 (8) 3.4.1.表名 (8) 3.4.2.主键(PRIMARY KEY) (9) 3.5. 列 (9) 3.5.1.列类型 (9) 3.5.2.列长度 (9) 3.6. 索引 (10) 3.7. 主键 (10) 3.8. 外键 (10) 4.表分析 (10) 5.PL/SQL存储过程编写规范 (10) 5.1. 命名 (10) 5.2. 格式 (11) 5.3. 大小写规则 (11) 5.4. 语句规范 (12) 5.4.1.SELECT语句的格式标准: (12) 5.4.2.UPDATE语句的格式标准: (12) 5.4.3.INSERT语句的格式标准: (13) 5.4.4.DELETE语句的格式标准: (13)

Oracle命名规则

数据库命名规则 2007-09-27 00:21:38| 分类:UML |字号订阅 数据库涉及字符规则 采用26个英文字母(区分大小写)和0 -9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。 数据库对象命名规则 数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。前缀:使用小写字母。 例如: 实际名字 实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头。 因此,合法的对象名字类似如下。 数据库表命名规则 1)字段由前缀和实际名字组成。实际名字中首单词一个系统尽量采取同一单词。

前缀:使用小写字母tb,表示表。 例如:tbMember tbMember_Info tbForum_Board tbForum_Thread1 2) 表以名词或名词短语命名,确定表名是采用复数还是单数形式,此外给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成4 个字母长的别名;如果表的名字由3 个单词组成,从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成4 字母长的别名,其余依次类推)对工作用表来说,表名可以加上前缀WORK_ 后面附上采用该表的应用程序的名字。在命名过程当中,根据语义拼凑缩写即可。注意,由于ORCLE会将字段名称统一成大写或者小写中的一种,所以要求加上下划线。 举例: 定义的缩写Sales: Sal 销售; Order: Ord 订单; Detail: Dtl 明细; 则销售订单明细表命名为:Sal_Ord_Dtl; 3) 如果表或者是字段的名称仅有一个单词,那么建议不使用缩写,而是用完整的单词。 举例: 定义的缩写Material Ma 物品; 物品表名为:Material, 而不是Ma. 但是字段物品编码则是:Ma_ID;而不是Material_ID 4) 所有的存储值列表的表前面加上前缀Z 目的是将这些值列表类排序在数据库最后。 5) 所有的冗余类的命名(主要是累计表)前面加上前缀X 冗余类是为了提高数据库效率,非规范化数据库的时候加入的字段或者表6) 关联类通过用下划线连接两个基本类之后,再加前缀R的方式命名,后面按照字母顺序罗列两个表名或者表名的缩写。 关联表用于保存多对多关系。 如果被关联的表名大于10个字母,必须将原来的表名的进行缩写。如果没有其他原因,建议都使用缩写。 举例:表Object与自身存在多对多的关系,则保存多对多关系的表命名为:R_Object; 表Depart和Employee;存在多对多的关系;则关联表命名为 R_Dept_Emp 附加:[表类型_]+ 表名 如果是系统公用表,[表类型_]+ 表名 如果是数据表,省略表类型部分 表名取英文全名

Oracle数据库设计规范建议

Oracle数据库设计规范建议 1 目的 本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好的保证。 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。 2 适用范围 本规范的适用人员范围包括我司的所有应用开发人员以及在我司承接数据库应用开发的软件人员。 本规范的适用IT范围包括数据库对象的命名规范、设计原则、SQL语句的设计和使用、SQL语句的性能优化建议、其他与性能有关的设计原则以及设计工具的选择。 3 数据对象的命名规范 3.1 通用规范 3.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。主要目的很明确,让人容易明白这个对象是做什么用的; 3.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写; 3.2 数据库对象命名规范 3.2.1 表的命名 3.2.1.1 表名的前缀:前缀_表名_T。为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:3.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名; 3.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员; 3.2.2 视图命名:相关表名_V(或者根据需要另取名字); 3.2.3 程序包命名:程序包名_PKG(用英文表达程序包意义); 3.2.4 存储过程命名:存储过程名_PRO(用英文表达存储过程意义);

Oracle数据库开发规范

项目编号:××× xxx Oracle数据库开发规范 Oracle DB Development Standardization <部门名称> **年**月**日 文档信息: 文档名称: 文档编号: 文档版本日期: 起草人: 起草日期: 复审人: 复审日期: 版本历史: 版本 日期 作者 更改参考 说明

审批信息: 签字/日期 审核 审批 目录 1 概述 4 1.1 编写目的 4 1.2 文档约定 4 1.3 预期的读者和阅读建议 4 1.4 参考文献 5 2 数据库对象命名 6 2.1 命名总体原则 6 2.2 表名 6 2.3 视图 6 2.4 同义词 6 2.5 序列7 2.6 索引7 2.7 存储过程7 2.8 存储函数8 2.9 存储程序包8 2.10 触发器8 2.11 字段8 2.12 其他9 3 设计规范9 3.1 范围9 3.2 表空间9 3.3 字符集10 3.4 主外键约束10 3.5 分区表10 3.6 RAC下的序列设计10 3.7 字段10 3.8 表结构设计11 3.9 索引设计11 3.10 临时表11 4 SQL编写规范 12 4.1 书写规范12 4.2 SQL语句的索引使用13 4.3 SQL语句降低系统负荷 15 5 PL/SQL编程规范18

5.1 书写规范18 5.2 常用数据库操作语句编码规范19 5.3 常用过程控制结构20 5.4 Condition 21 5.5 Cursor 22 5.6 变量定义与赋值22 5.7 过程与函数调用23 5.8 例外处理(Exception) 23 5.9 例外处理的错误消息24 5.10 注释(Comment) 25 5.11 应用调试控制27 5.12 并发控制27 5.13 代码测试、维护29 1 概述 1.1 编写目的 为规范软件开发人员的Oracle数据库开发提供参考依据和统一标准。 1.2 文档约定 说明本文档中所用到的专用术语定义或解释,缩略词定义。 1.3 预期的读者和阅读建议 本文档适用于所有开发员。 1.4 参考文献 列出有关的参考文件,如: a.属于本项目的其他已发表文件; b.本文件中各处引用的文档资料。 列出这些文件的标题、作者,说明能够得到这些文件资料的来源。 2 数据库对象命名 2.1 命名总体原则 本规范所涉及数据库对象主要是指表、视图、同义词、索引、序列、存储过程、函数、触发器等; 命名应使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割;避免使用Oracle的保留字或关键字,如LEVEL和TYPE; 各表之间相关列名尽量同名; 除数据库模式对象名称长度为1-8个字符,其余对象名称均要求不超过30个字符; 命名只能使用大写英文字母,数字和下划线,且以英文字母开头。 2.2 表名 规则:XXX_MMM_DDDD 说明:XXX代表子系统或模块名称(2-3个字母构成); MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有); DDDD为表的简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音。 示例:PO_HEADERS_ALL 2.3 视图 规则:XXX_MMM_DDDD_V 说明:XXX代表子系统或模块名称(2-3个字母构成);

数据库命名设计规范

数据库命名、设计规范 一、数据库表及字段 1.数据库表的命名规范: 表的前缀应该用系统或模块的英文名的缩写(全部大写)。如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀。例如:如果有一个模块叫做BBS(缩写为BBS),那么你的数据库中的所有对象的名称都要加上这个前缀:BBS_ + 数据库对象名称,BBS_CustomerInfo标示论坛模块中的客户信息表。 表的名称必须是易于理解,能表达表的功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须大写。如果当前表可用一个英文单词表示的,请用完整的英文单词来表示;例如:系统资料中的客户表的表名可命名为:SYS_Customer。如果当前表需用两个或两个以上的单词来表示时,尽量以完整形式书写,如太长可采用两个英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。 表名称不应该取得太长(一般不超过三个英文单词)。表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。在命名表时,用单数形式表示名称。例如,使用 Employee,而不是 Employees。对于有主明细的表来说。明细表的名称为:主表的名称 + 字符Dts。例如:采购定单的名称为:PO_Order,则采购定单的明细表为:PO_OrderDts;对于有主明细的表来说,明细表必须包含两个字段:主表关键字、SN,SN字段的类型为int型,目的为与主表关键字联合组成明细表的关键字,以及标示明细记录的先后顺序,如1,2,3……。表必须填写描述信息,后台表名尽量与前台表名相同,后台独有的表应以_b作为后缀。如r_gggd_b。 数据库表的命名采用如下规则: 1)表名用模块名_开头,表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。 2)多个单词间用下划线(_)进行连接。若库中有多个系统,表名采用系统名称+单词或多个单词,系统名是开发系统的缩写,如VNET。

命名规范_C (Sharp)

命名规范_C(Sharp) 1.命名规范 a)类 【规则1-1】使用Pascal规则命名类名,即首字母要大写。 【规则1-2】使用能够反映类功能的名词或名词短语命名类。 【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。 【规则1-4】自定义异常类应以Exception结尾。 【规则1-5】文件名要能反映类的内容,最好是和类同名。 b)类字段 【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。 【规则2-2】类字段变量名前可加“_”前缀。 【规则2-3】坚决禁止在普通变量前加“m_”(这是VC老命名规则)。 c)方法 【规则3-1】方法名采用Pascal规则,第一个字符要大写。 【规则3-2】方法名应使用动词或动词短语。 【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。 d)属性 【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。 【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。 e)参数 【规则5-1】参数采用camel规则命名,且首字符小写。 【规则5-2】使用描述性参数名称,参数名称应当具有最够的说明性。 【规则5-3】不要给参数加匈牙利语类型表示法的前缀。 【规则5-4】检查方法所有输入参数的有效性。 f)常量 【规则6-1】只读常量使用Pascal命名规则,即首字母大写。 【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。 【规则6-3】枚举值从小到大顺序定义。 【规则6-4】静态字段或属性采用Pascal规则,即首字符大写。 g)接口

Oracle数据库设计策略及规范

Oracle数据库设计策略及规范 设计策略及规范 1. 目的 定义Oracle数据库设计规范,作为数据库规划、设计、开发以及维护人员的技术参考资料。用以规范和指导相关人员的设计行为。 2. 概述 本文档根据Oracle数据库性能特点,描述对表、视图、存储过程、对象命名等方面的设计规范。 3. 基本策略 3.1 设计策略 ◆?分类拆分数据量大的表。 对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大,会影响数据的迅速定位。如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。 ◆?分区策略 在拥有数500行以上的表时,采用分区策略。 ◆?索引设计。 对于大的数据库表,合理的索引能够提高整个数据库的操作效率。在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。例如,如果对一个5万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近3秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到1秒。因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。 ◆?有时候为了提高性能。减少表的关联,恰当的数据冗余是允许的。 ◆?索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡 ◆?为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象,确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。 ◆?对于经常发生同时查询或频繁查询的表,最好把他放到不同的磁盘空间上 4. 逻辑设计规范 4.1 范式 ◆?如果没有性能上的原因,应该使用关系数据库理论,达到较高的范式,避免数据冗余。 ◆?如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF。 4.2 表设计 ◆?对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能。如果表按某些字段进行增长,则采用按字段值范围进行范围分区;如果表按某个字段 的几个关键值进行分布,则采用列表分区;对于静态表,则采用Hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。 ◆?每个表均创建类型为Sequence的主键字段。 4.3 索引设计 ◆?常规OLTP应用,创建B-TREE索引,不创建位图索引。 ◆?不需要为小型数据表(<5000)创建索引。 ◆?给单个表创建的索引不超过5个,特别是海量交易类表。 ◆?索引条件查询结果记录,不超总记录的20%。 ◆?不要给固定选项的字段创建独立索引。 如只有‘男,女’的性别字段;‘是,否’的状态字段等,不要创建独立索引,位可以建立复合索引。 ◆?对于复合索引,索引字段顺序比较关键,把查询频率比较高的字段排在索引组合的最前面。 ◆?索引放到独立的表空间,该表空间不需要REDO LOG。 ◆?含有外键约束的表的字段,必须有单独索引。如订单明细的表头外键。 5. 对象命名规范 5.1 一般规范 5.1.1 语言 ◆?命名使用英文单词,不使用复数。 ◆?英文单词使用同对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。 ◆?当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用简写或缩写,缩写要基本能表达原单词的意义。 ◆?当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。 ◆?禁止使用中文或拼音缩写进行命名

oracle数据库命名规范

竭诚为您提供优质文档/双击可除oracle数据库命名规范 篇一:oracle数据库管理脚本命名规范 oracle資料庫管理腳本命名規範 oracle中的数据字典是数据库中的非常重要的一部分,提供了相关数据库的信息,它是所有oracle用户(从应用 的最终用户、应用的设计开发者到数据库管理员)的非常重要的信息来源。数据字典的创建,是在oracle数据库创建 完毕后,运行一些相关的数据库管理脚本来完成的。当采用oracle统一安装器(oracleuniversalinstaller)创建数据库时,oracle服务器有关的字典视图和脚本最后会被自动安装。但当需要升级目前的oracle数据库服务器时,数据库 管理员必须要手工重新运行创建这些视图或脚本的sql。安 装完数据库后,oracle数据库管理脚本就存放在操作系统中。对于unix和nt操作系统,分别位于不同的物理目录下,见表1所示: 表1数据库管理脚本在操作系统中的物理位置 oracle中几乎所有的系统管理脚本都保存在该文件目 录下,该目录下含有上百个不同文件。这些不同的文件都有

什么作用呢?本文将详细讨论组成oracle数据库管理脚本的命名规范。这样用户看到某个文件大概就可以知道该文件主要用途是什么。该目录下的文件按照功能不同可分为4大类,oracle为了容易区分这几类不同的文件,对于文件的命名遵从一定的规则。见表2所示。 表2数据库管理脚本命名规范 下面来详细介绍这四种不同类型的脚本功能: 1、cat*.sql脚本 该类脚本主要用于创建数据字典视图。其中,脚本catalog.sql和catproc.sql是创建数据库后必须要运行的两个脚本。这两个脚本的功能说明见表3所示。 (1)catalog.sql 该脚本创建相对于系统基表的视图和系统动态性能视图以及他们的同义词。该脚本又同时运行创建其他对象的脚本,主要有: 基本pl/sql环境,包括pl/sql的声明: -数据类型 -预定义例外 -内建的过程和函数 -sql操作等 审计 导入/导出

实验四 Oracle数据库对象

实验四Oracle数据库对象 一、实验目的 了解Oracle的表、视图、索引、序列、同义词的基本概念和基本用法。 二、实验内容和步骤 1、查看用户具有的对象和可访问的对象(操作结果截图填入空白处) 以SCOTT连接数据库。 (1)查看用户模式中各种类型的对象数量 selectobject_type,count(*) from user_objects group by object_type (2)确定用户模式有权访问的对象总数 selectobject_type,count(*) from all_objects group by object_type

(3)确定谁拥有用户能够看见的对象 select distinct owner from all_objects 2、创建基本表(填入代码) 创建上图基本表KHB,要求表创建在表空间USER_DATA

3、创建临时表(填入代码) (1)创建一个基于会话的临时表。 a) 创建临时表tmp_khb_1(与KHB同结构); b)插入一条记录khbh=’00000001’,khmc=’aaa’; c)以SCOTT用户启动第2个SQL*PLUS会话; d) 在第2个会话中查询tmp_khb_1;(操作代码及操作结果截图)

e)插入一条记录khbh=’00000002’,khmc=’bbb’; f)在第1个会话中查看第2个会话的数据;(操作代码及操作结果截图) g)在第1个会话中,将表截断; h)在第2个会话中,观察表中是否仍然存在记录;(操作代码及操作结果截图)

(2)创建一个基于事务的临时表 a) 创建临时表tmp_khb_2(与KHB同结构); b) 插入一条记录khbh=’00000001’,khmc=’aaa’; c)查询tmp_khb_2;(操作代码及操作结果截图) d)事务提交commit;

Oracle数据库使用及命名规则的详解

Ekw719 公司已建立的或待建立的网站,如:中文站(CHINA),国际站(ALIBABA),华商站(CHINESE)等。 OLPS Online process system,在线处理系统,即我们的会员可以浏览的网站所连接的数据库,也是我们所说的前台。 BOPS Back Office process system,后台处理系统,即我们的网站的发布系统。 BZO Business Object(?),公司网站低层JAVA对象,主要负责与数据库打交道。 一、命名约定 1.是指数据库、数据库对象如TABLE、SEQUENCE、PROCEDURE、COLUMN等的命名约定; 2.命名富有意义英文词汇,除个别通用的(见列表),要避免使用缩写),多个单词组成的,中间以下划线分割; 3.除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符; 4.命名只能使用英文字母,数字和下划线;'Ekw719'> 5.避免使用Oracle的保留字如level、关键字如type(见列表); 6.名表之间相关列名尽量同名; 7.数据库的命名:网上数据库命名为“OLPS”+表示站点(SITE,以下同)的2-4个字符,后台数据库命名为“BOPS”+表示站点的2-4个字符。测试数据库命名为“OLPS|BOPS”+“TEST”,开发数据库命名为“OLPS|BOPS”+“TEST”,用模式(SCHEMA/USER)的不同来区分不同的站点。 8.INDEX命名:table_name+column_name+index_type(1 byte)+idx,各部分以下划线(_)分割。多单词组成的column name,取前几个单词首字母,加末单词组成column_name。如:sample表member_id上的index: sample_mid_idx news表title上的unique index:news_titile_uidx; 9.SEQUENCE命名:seq_+table_name; 二、注释说明 1.本注释说明主要用于PL/SQL程序及其它SQL文件,其它可作参考; 2.SQLPLUS接受的注释有三种: ――这儿是注释 /*这儿是注释*/ REM这儿是注释 3.开始注释,类似JAVAK中的开始注释,主要列出文件名,编写日期,版权说明,程序功能以及修改记录:REM REM$Header: filename, version, created date,auther REM REM Copyright REM

Oracle 数据库视图与基表的关系

Oracle 数据库视图与基表的关系 一:首先解释什么是视图:视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。 二:视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,Oracle自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名可以挑选某个表中你需要的属性; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。 三:视图的修改:直接利用前边创建时的or replaece 重建即可。 四:视图上的DML 操作: 1.一般简单视图,也就是基表只有一个的视图,是可以通过修改视图来修改基表的,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst; 如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图WITH CHECK OPTIDN 违反where 子句”的异常。 2.针对复杂视图,也就是基表有多个表,通过内连接查询建立的视图,只能通过视图来修改key_preserved表, 什么是Key-Preserved Table呢.Oracle给出的定义是: A table is key preserved if every key of the table can also be a key of the result of the join. It is not necessary that the key or keys of a table be selected for it to be key preserved. It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join. 如果某一个表的主键可以作为这个join结果(view通常是几个表的join结果)的主键,那么这个表就是key preserved table。 这个表的主键并非一定要出现在select出来的结果集中(select list里面),但是如果其出现在结果集中,那么它必须可以满足作为这个结果集的主键的要求。 通过下面的例子来解释: create view liuwenhe as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.empno in (10,30) and e.deptno = d.deptno;emp表的主键是empno,dept表的主键

相关文档