删除之后,序列不能再次被引用
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,取值为0或1)来表示该行是否包含该位图的索引列的取值,如果为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)
其中,idx1和idx2索引都使用了ID和TOPIC列,但由于顺序不同,因此是合法的。
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;
相关推荐
Oracle数据库系统是全球广泛使用的...通过深入学习“Oracle数据库系统应用与开发”,无论是初学者还是经验丰富的开发者,都能增强对Oracle数据库的理解,提升开发和管理能力,为实际项目中的高效数据处理打下坚实基础。
对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握数据库的核心概念,从而在IT行业中建立稳固的基础。 一、Oracle数据库系统概述 Oracle数据库系统是Oracle公司开发的,它采用SQL...
Oracle数据库管理系统是全球广泛使用的大型关系型数据库系统...以上只是Oracle数据库管理与应用系统开发的一部分知识,实际操作中还需要结合具体场景和需求,灵活运用各种工具和技术,以确保系统的稳定运行和高效开发。
oracle 数据库的应用开发 oracle 数据库的应用开发
由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。
Oracle 11g中文版数据库管理、应用与开发标准教程
Oracle数据库在应用开发中扮演着至关重要的角色,它是一个强大且广泛使用的数据库管理系统,尤其适合企业级的数据存储和处理。本教程将深入讲解如何基于Oracle数据库进行应用开发,包括数据库设计的方法、人事管理...
本课程“Oracle数据库应用与开发”旨在帮助学生深入理解和掌握Oracle数据库的相关知识,包括其基本概念、架构、SQL语言、数据管理、性能优化及应用程序开发等。 一、Oracle数据库基础 Oracle数据库系统基于客户-...
体验数据库的应用→认识 Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储过程与触发器 →管理安全性→数据库...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位...从数据库设计、SQL编程、PL/SQL开发,到事务处理、安全管理以及备份恢复,全方位覆盖了Oracle数据库应用开发的各个方面。
Oracle10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库管理系统,主要应用于企业级的数据存储、管理和分析。...通过学习和掌握这些内容,可以有效地管理和开发高效、稳定、安全的Oracle数据库应用系统。
吴海波主编的《Oracle数据库应用与开发实例教程》是一本深入浅出的教材,旨在帮助学习者掌握Oracle数据库的使用和开发技巧。本教程结合实际案例,提供了丰富的学习材料,对于学生和专业人士来说都是宝贵的参考资料。...
Oracle 数据库管理与应用系统开发: Oracle编程 创建存储过程 创建自定义类型 使用存储过程和函数 创建存储过程 创建函数 使用触发器和作业 创建触发器 创建序列等 跟踪和调试 创建存储过程 创建...
Oracle数据库的开发与应用培训
《Oracle数据库应用与开发案例教程》是一本专为学习Oracle数据库应用与开发的读者精心编写的教材。本书深入浅出地介绍了Oracle数据库的基础知识、管理技巧以及开发实践,旨在帮助读者掌握Oracle数据库的核心技术和...
Oracle数据库管理员教程旨在帮助读者...通过阅读指定的参考书籍,如《ORACLE数据库系统基础》、《数据库管理及应用开发》和《ORACLE数据库管理员教程》,可以深入理解Oracle数据库管理的各个方面,提升DBA的专业技能。