`
孔雀王子
  • 浏览: 42151 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论

Oracle数据库管理、应用与开发(十五)

阅读更多

21.1.6 删除视图的操作

                        Drop view 视图名;

21.2 序列

序列是Oracle提供的用于产生一系列唯一数字的数据库对象。

21.2.1 序列的特性

自动提供唯一的数值

共享对象

用于提供主键值(主要特性)

将序列值装入内存可以提高访问效率

21.2.2 创建序列

在用户自己模式中创建序列时,必须具有 create sequence 系统权限。要在其他模式中创建序列,必须具有 create any sequence系统权限。

语法形式:

CREATE SEQUENCE <seq_name>  //创建序列名称

[INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减,默认是1

                            [START WITH n]    //开始值,递增默认是minvalue ,递减是maxvalue

                            [{MAXVALUE n | NOMAXVALUE}]   //最大值

                            [{MINVALUE n | NOMINVALUE}]    //最小值

                            [{CYCLE | NOCYCLE}]       //循环或不循环

                            [{CACHE n | NOCACHE}];           //分配并存入到内存中

NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用

CURRVAL 中存放序列的当前值

NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效

21.2.3 修改序列(修改序列的增量,、最大值、最小值、循环选项或是否装入内存)

         语法形式:

ALTER SEQUENCE <seq_name>  //创建序列名称

[INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减,默认是1

                            [START WITH n]    //开始值,递增默认是minvalue ,递减是maxvalue

                            [{MAXVALUE n | NOMAXVALUE}]   //最大值

                            [{MINVALUE n | NOMINVALUE}]    //最小值

                            [{CYCLE | NOCYCLE}]       //循环或不循环

                            [{CACHE n | NOCACHE}];           //分配并存入到内存中

注意事项:

必须是序列的拥有者或对序列有 ALTER 权限

只有将来的序列值会被改变

改变序列的初始值只能通过删除序列之后重建序列的方法实现

21.2.4 删除序列

使用DROP SEQUENCE 语句删除序列

删除之后,序列不能再次被引用

21.3 同义词

同义词是表、索引、视图等模式对象的一个别名。同义词只是数据库对象的一个替代词,在使同义词时,Oracle会将其翻译为对应的对象的名称。同义词只在Oracle数据库的数据字典中保存其定义描述,因此同义词并不占用任何实际的存储空间。

在开发数据库应用程序时,应当尽量避免直接引用表、视图、或其他数据库的名称,而改用这些对象的同义词。这样可以避免当管理员对数据库对象做出修改和变动之后,必须重新编译应用程序。使用同义词之后,即使引用的对象发生变化,也只需要在数据库中对同义词进行修改,而不必对应用程序做任何改动。

21.3.1 创建同义词的语法形式如下:

CREATE [PUBLIC] SYNONYM synonym_name

FOR schema_object

其中,PUBLIC选项决定创建的同义词是否为公有同义词。

下面通过一个示例来说明如何使用同义词。

select * from vendition.商品信息;

也就是说,必须使用模式名加表名的形式,对表进行限定。

为了简化对该表的访问,可以对该表建立一个相对简单的公有同义词:

 

 

drop public synonym merch_info;

 

二十一、索引

         在关系数据库中,索引是一种与表有关系的数据库结构,它可以使对应于表的SQL语句执行的更快。

         Oracle中的索引可以拥有它自己的存储空间,不必与相关的表处于同一个表空间中。

         Oracle中可以创建多种类型的索引,以适应各种表的特点。常用的索引类型有B树索引、反向引用键索引、位图索引、基于函数的索引、簇索引、全局和局部索引等。

         21.1 B树索引

B树索引是Oracle数据库中最常用的一种索引。当使用CREATE INDEX语句创建索引时,默认创建的索引就是B树索引。

B树索引是按B树结构或使用B树算法组织并存储索引数据的。B树索引就是一棵二叉树,它由根、分支节点和叶子节点三部分构成。其中,根包含指向分支节点的信息,分支节点包含指向下级分支节点和指向叶子节点的信息,叶子节点包含索引列和指向表中每个匹配行的ROWID值。叶子节点是一个双向链表,因此可以对其进行任何方面的范围扫描。

B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何,查询速度基本相同。另外,B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询。



 

B树索引的分类如下所示。

Unique:唯一索引,其索引值不能重复,但允许为NULL。在创建索引时指定UNIQUE关键字可以创建唯一索引。当建立“主键约束条件”时Oracle会自动在相应列上建立唯一索引,主键列不允许为NULL

Non-Unique:非唯一索引,其索引值可以重复,允许为NULL。默认情况下,Oracle创建的索引是非唯一索引。

Reverse Key:反向关键字索引。通过在创建索引时指定“REVERSE”关键字,可以创建反向关键字索引,被索引的每个数据列中的数据都是反向存储的,但仍然保持原来数据列的次序。

         21.2 位图索引

B树索引中,保存的是经排序过的索引列及其对应的ROWID值。但是对于一些基数很小的列来说,这样做并不能显著提高查询的速度。所谓基数,是指某个列可能拥有的不重复值的个数。比如性别列的基数为2(只有男和女)。

因此,对于象性别、婚姻状况、政治面貌等只具有几个固定值的字段而言,如果要建立索引,应该建立位图索引,而不是默认的B树索引。

当创建位图索引时,Oracle会扫描整张表,并为索引列的每个取值建立一个位图。在这个位图中,对表中每一行使用一位(bit,取值为01)来表示该行是否包含该位图的索引列的取值,如果为1,则表示该位对应的ROWID所在的记录包含该位图索引列值。最后通过位图索引中的映射函数完成位到行的ROWID的转换。

         21.3 函数索引

前面的索引都是直接对表中的列创建索引,除此之外,Oracle还可以对包含有列的函数或表达式创建索引,这就是函数索引。

当需要经常访问一些函数或表达式时,可以将其存储在索引中,当下次访问时,由于该值已经计算出来了,因此,可以大大提高那些在WHERE子句中包含该函数或表达式的查询操作的速度。

下面通过一个例子看看函数索引的用法。在SALES表中,TOPIC列的值如果采用首字母大写的方式存储。

         21.4 创建索引

                   创建索引使用CREATE INDEX语句。

在用户自己的方案中创建索引,需要CREATE INDEX系统权限,在其他用户的方案中创建索引则需要CREATE ANY INDEX系统权限。另外,索引需要存储空间,因此,还必须在保存索引的表空间中有配额,或者具有UNLIMITED TABLESPACE系统权限。

CREATE INDEX语句的语法如下:

CREATE [UNIQUE] | [BITMAP] INDEX index_name

ON table_name([column1 [ASC|DESC],column2

[ASC|DESC],…] | [express])

[TABLESPACE tablespace_name]

[PCTFREE n1]

[STORAGE (INITIAL n2)]

[NOLOGGING]

[NOLINE]

[NOSORT];

其中:

UNIQUE:表示唯一索引,默认情况下,不使用该选项。

BITMAP:表示创建位图索引,默认情况下,不使用该选项。

PCTFREE:指定索引在数据块中的空闲空间。对于经常插入数据的表,应该为表中索引指定一个较大的空闲空间。

NOLOGGING:表示在创建索引的过程中不产生任何重做日志信息。默认情况下,不使用该选项。

ONLINE:表示在创建或重建索引时,允许对表进行DML操作。默认情况下,不使用该选项。

NOSORT:默认情况下,不使用该选项。则Oracle在创建索引时对表中记录进行排序。如果表中数据已经是按该索引顺序排列的,则可以使用该选项。

可以在一个表上创建多个索引,但这些索引的列的组合必须不同。如下列的索引是合法的。

CREATE INDEX idx1 ON SALES(ID,TOPIC)
CREATE INDEX idx2 ON SALES(TOPIC,ID)

 

其中,idx1idx2索引都使用了IDTOPIC列,但由于顺序不同,因此是合法的。

21.4.1 创建B树索引

B树索引是Oracle默认的索引类型,当在WHERE子句中经常要引用某些列时,应该在这些列上创建索引。

例如,经常需要在SALES表的TOPIC列上按标题查询,就可以在TOPIC列上建立B树索引。

21.4.2 创建位图索引

位图索引适用于表中的列具有较小的基数时,在创建位图索引时,必须在CREATE TABLE语句中显式地指定BITMAP关键字。例如,下面的语句在“商品信息”表的“供应商编号”和“产地”列上创建位图索引Merch_Bitmap_Index

 

Create bitmap index Merch_bitmap_index ON 商品信息(供应商编号,产地) tablespace users;

B树索引类似,在创建位图索引时,也可以通过STORAGE子句来设置索引的存储参数。

21.4.2 创建反向键索引

创建返乡索引键时,必须在Create index语句中指定关键字REVERSE,反向键索引适用于严格排序的列。例如,下面的语句可以为“商品信息”表的“商品编号”列创建反向键索引:

Create index Merch_Reverse_index ON 商品信息(商品编号) reverse
PCTFREE 30
TABLESPACE users; 

              21.4.3 创建基于函数的索引

创建基于函数的索引,可以提高当在查询条件中使用函数和表达式时查询的执行速度。

提示:在创建基于函数的索引时,不仅可以使用SQL函数,还可以使用用户自定义函数。

例如:

Create index function_index on 入库单信息(to_char(‘入库日期’,’yyyy-mm-dd’))
Tablespase users;

 

 

 

 

 

 

  • 大小: 26 KB
分享到:
评论

相关推荐

    Oracle数据库系统应用与开发

    Oracle数据库系统是全球广泛使用的...通过深入学习“Oracle数据库系统应用与开发”,无论是初学者还是经验丰富的开发者,都能增强对Oracle数据库的理解,提升开发和管理能力,为实际项目中的高效数据处理打下坚实基础。

    oracle数据库系统应用与开发

    对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握数据库的核心概念,从而在IT行业中建立稳固的基础。 一、Oracle数据库系统概述 Oracle数据库系统是Oracle公司开发的,它采用SQL...

    oracle 数据库管理与应用系统开发代码

    Oracle数据库管理系统是全球广泛使用的大型关系型数据库系统...以上只是Oracle数据库管理与应用系统开发的一部分知识,实际操作中还需要结合具体场景和需求,灵活运用各种工具和技术,以确保系统的稳定运行和高效开发。

    oracle 数据库的应用开发

    oracle 数据库的应用开发 oracle 数据库的应用开发

    Oracle 10g数据库管理、应用与开发标准教程

    由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle数据库的应用开发 Oracle数据库的应用开发.ppt

    Oracle数据库在应用开发中扮演着至关重要的角色,它是一个强大且广泛使用的数据库管理系统,尤其适合企业级的数据存储和处理。本教程将深入讲解如何基于Oracle数据库进行应用开发,包括数据库设计的方法、人事管理...

    Oracle数据库应用与开发

    本课程“Oracle数据库应用与开发”旨在帮助学生深入理解和掌握Oracle数据库的相关知识,包括其基本概念、架构、SQL语言、数据管理、性能优化及应用程序开发等。 一、Oracle数据库基础 Oracle数据库系统基于客户-...

    Oracle数据库应用与开发实例教程

    体验数据库的应用→认识 Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储过程与触发器 →管理安全性→数据库...

    Oracle数据库应用开发及实践.rar

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位...从数据库设计、SQL编程、PL/SQL开发,到事务处理、安全管理以及备份恢复,全方位覆盖了Oracle数据库应用开发的各个方面。

    Oracle10g数据库管理与应用系统开发光盘

    Oracle10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库管理系统,主要应用于企业级的数据存储、管理和分析。...通过学习和掌握这些内容,可以有效地管理和开发高效、稳定、安全的Oracle数据库应用系统。

    Oracle数据库应用与开发实例教程[吴海波主编][电子教案]

    吴海波主编的《Oracle数据库应用与开发实例教程》是一本深入浅出的教材,旨在帮助学习者掌握Oracle数据库的使用和开发技巧。本教程结合实际案例,提供了丰富的学习材料,对于学生和专业人士来说都是宝贵的参考资料。...

    Oracle 数据库管理与应用系统开发

    Oracle 数据库管理与应用系统开发: Oracle编程 创建存储过程 创建自定义类型 使用存储过程和函数 创建存储过程 创建函数 使用触发器和作业 创建触发器 创建序列等 跟踪和调试 创建存储过程 创建...

    Oracle数据库的开发与应用培训.doc

    Oracle数据库的开发与应用培训

    Oracle数据库应用与开发案例教程

    《Oracle数据库应用与开发案例教程》是一本专为学习Oracle数据库应用与开发的读者精心编写的教材。本书深入浅出地介绍了Oracle数据库的基础知识、管理技巧以及开发实践,旨在帮助读者掌握Oracle数据库的核心技术和...

    ORACLe数据库管理员教程

    Oracle数据库管理员教程旨在帮助读者...通过阅读指定的参考书籍,如《ORACLE数据库系统基础》、《数据库管理及应用开发》和《ORACLE数据库管理员教程》,可以深入理解Oracle数据库管理的各个方面,提升DBA的专业技能。

Global site tag (gtag.js) - Google Analytics