关联数组:
一维的,无界限的,同种元素的稀疏集合,只在PL/SQL中可用。
在oracle 8i中称为索引表,9i后改为关联数组。
嵌套表:
一维的,无界限的,同种元素的稀疏集合;
初始化是紧密的,可能被删除能稀疏的。嵌套表在PL和数据库里使用。
嵌套表是多重表,里面元素没有继承顺序。
变长数组:
一维的同种元素集合。有限的,并且不是稀疏的。当定义变长数组时必须指定最大长度。
可以PL/SQL及数据库里使用。变长数组是保留顺序的。
选择合适的集合类型。
普遍情况:在都能使用的情况下,优先使用关联数组,因为它能减少coding.不用初始化,不用extend.性能最高(在老的数据库版本中)。如果有储存到数据里的话只能使用嵌套表或是变长数组。
Guidelines:
- 稀疏数组使用关联数组
- 下标使用负数,使用关联数组。
- 使用Oracle 10g的话,如果要使用高层集合操作,更倾向使用嵌套表而不是关联数组
- 在表中储存少量数据使用变长数组
- 表中储存大量数据使用嵌套表
- 想要保证数据储存的顺序,并且是小数据量的话使用变长数组。“小”是指能储存到一个block里
- 在使用变长数组时,不用担心删除中间数据。
Table 12-2. Comparing Oracle collection types
Characteristic
Associative array
Nested table
VARRAY
Dimensionality
|
Single
|
Single
|
Single
|
Usable in SQL?
|
No
|
Yes
|
Yes
|
Usable as column datatype in a table?
|
No
|
Yes; data stored "out of line" (in separate table)
|
Yes; data stored "in line" (in same table)
|
Uninitialized state
|
Empty (cannot be null); elements undefined
|
Atomically null; illegal to reference elements
|
Atomically null; illegal to reference elements
|
Initialization
|
Automatic, when declared
|
Via constructor, fetch, assignment
|
Via constructor, fetch, assignment
|
In PL/SQL, elements
|
referenced via
|
BINARY_INTEGER (-2,147,483,647 .. 2,147,483,647)
VARCHAR2 (Oracle9i Database Release 2 and above)
|
Positive integer between 1 and 2,147,483,647
|
Positive integer between 1 and 2,147,483,647
|
Sparse?
|
Yes
|
Initially, no; after deletions, yes
|
No
|
Bounded?
|
No
|
Can be extended
|
Yes
|
Can assign value to any
|
element at any time?
|
Yes
|
No; may need to EXTEND first
|
No; may need to EXTEND first, and cannot EXTEND past upper bound
|
Means of extending
|
Assign value to element with a new subscript
|
Use built-in EXTEND procedure (or TRIM to condense), with no predefined
|
maximum
|
EXTEND (or TRIM), but only up to declared maximum size
|
Can be compared for equality?
|
No
|
Yes, in Oracle Database 10g
|
No
|
Can be manipulated with set operators
|
No
|
Yes, in Oracle Database 10g
|
No
|
Retains ordering and subscripts when stored in and retrieved from database?
|
N/A
|
No
|
Yes
|
分享到:
相关推荐
### ORACLE经典学习笔记知识点概览 #### 第一章 ORACLE 命令 本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过...
Oracle学习笔记精华版是针对数据库管理系统Oracle的一份重要学习资源,涵盖了从基础概念到高级特性的全面知识。Oracle,作为全球广泛使用的大型企业级数据库系统,对于IT专业人员尤其是数据库管理员(DBA)来说,是...
### Oracle个人学习笔记知识点梳理 #### 一、Oracle 用户与权限管理 **1. 创建用户** - 使用管理员账户(如 `sys` 或 `system`)登录后,可以通过以下命令创建新用户: ```sql SQL> create user zhangsan ...
Oracle 认证学习笔记 本文档主要讲述 Oracle 认证学习笔记,涵盖了 Oracle 数据库体系结构基础、系统全局区(SGA)、实例(Instance)、Oracle 存储器结构等知识点。 一、 Oracle 数据库体系结构基础 Oracle ...
Oracle数据库学习笔记,包括课程PPT(数据库基础,简单查询,单行多行函数,多表连接,子查询,高级子查询,集合运算,层次查询,DML与事务控制,数据库的网络连接,创建维护表,约束,视图,序列索引和同义词,用户...
Oracle数据库是世界上最广泛使用的数据库管理系统之一,用于...以上就是Oracle数据库学习笔记中涉及的主要知识点,对于理解和操作Oracle数据库至关重要。深入理解和掌握这些概念,将有助于你成为更优秀的数据库管理员。
在“MSDN Oracle学习笔记”中,我们可以期待找到关于Oracle数据库的详细讲解和实践指导。 首先,Oracle数据库的基础知识是必不可少的。这通常涵盖数据库系统的基本概念,如SQL(结构化查询语言)的使用,数据类型,...
"Oracle经典学习笔记"很显然是一份针对Oracle数据库系统的学习资料,特别关注的是其SQL查询语言的使用。Oracle SQL是SQL标准的一个扩展,提供了许多特性和功能,使得数据库管理和数据操作更为高效和灵活。 首先,...
在"Oracle培训学习笔记"中,我们可以期待涵盖以下几个关键知识点: 1. **Oracle数据库架构**:Oracle数据库由多个组件组成,包括实例(Instance)和数据库(Database)。实例是内存结构与后台进程的集合,负责管理...
### Oracle 认证学习笔记 #### 第一章 Oracle 数据库体系结构基础 本文将深入探讨 Oracle 9i DBA 认证教程中的基础知识,并重点分析 Oracle 数据库的体系结构及其核心概念。 ### 1. Oracle 数据库系统 Oracle ...
[windowing clause] -- 定义分析函数操作的行集合 ) ``` 在这个语法中,`function_name`是你要使用的分析函数,如`SUM`, `AVG`, `RANK`等。`partition by`用于定义数据的分组,`order by`用于规定计算的顺序,而`...
这个“Oracle全部学习笔记培训结构的学习资料”压缩包文件包含了深入学习Oracle所需的各种材料,对于想要掌握Oracle技术的人来说是一份宝贵的资源。 1. **Oracle基础知识** - 数据库概念:了解数据库的基本概念,...
Oracle SQL还提供了许多高级特性,如子查询、联接操作、集合操作以及窗口函数等,这些都是深入掌握Oracle SQL所必需的。通过不断实践和学习,我们可以熟练运用这些工具,以高效地管理和操作Oracle数据库。
以下是对Oracle学习笔记和相关知识点的详细解析: 1. **基础概念与术语** - **SQL**:Structured Query Language,用于管理和处理关系数据库的标准语言。 - **RDBMS**:关系数据库管理系统,Oracle便是其中的代表...
### Oracle数据库学习笔记知识点 #### 一、Oracle的用户管理 **Oracle认证体系:** - **OCAR (Oracle Certified Associate):** Oracle初级工程师认证,入门级别认证,为后续更高级别的认证打下基础。 - **OCP ...
这份“Oracle学习笔记”无疑是你深入理解和掌握Oracle技术的重要资源。笔记涵盖了Oracle的语法基础、核心概念以及各种实用功能,旨在帮助初学者快速上手,同时也能为有一定经验的DBA提供参考。 首先,Oracle数据库...