转自http://blog.csdn.net/simonezhlx/article/details/3167343
不知最初原创作者是谁,甚是遗憾。
感谢原创者和转载者,让更多的人学到有用的知识。
一、嵌套表的定义:
嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。考查一个包含部门信息的表,在任何时间内每个部门会有很多项目正在实施。在一个严格的关系模型中,将需要建立两个独立的表department和project。
嵌套表允许在department表中存放关于项目的信息。勿需执行联合操作,就可以通过department表直接访问项目表中的记录。这种不经联合而直接选择数据的能力使得用户对数据访问更加容易。甚至在并没有定义方法来访问嵌套表的情况下,也能够很清楚地把部门和项目中的数据联系在一起。在严格的关系模型中,department和project两个表的联系需要通过外部关键字(外键)关系才能实现。
二、举例说明嵌套表的使用:
假设有一个关于动物饲养员的表,希望其中具有他们饲养的动物的信息。用一个嵌套表,就可以在同一个表中存储饲养员和其饲养的全部动物的信息。
1、创建类型animal_ty:此类型中,对于每个动物都包含有一个记录,记载了其品种、名称和出生日期信息。
CREATE TYPE animal_ty AS OBJECT (
breed varchar2(25),
name varchar2(25),
birthdate date);
2、创建animals_nt:此类型将用作一个嵌套表的基础类型。
CREATE TYPE animals_nt as table of animal_ty;
3、创建表breeder:饲养员的信息表
create table breeder
(breedername varchar2(25),
animals animals_nt)
nested table animals store as animals_nt_tab;
4、向嵌套表中插入记录
insert into breeder
values('03y',animals_nt(animal_ty('dog','butch','31-03-97'),
animal_ty('dog','rover','31-03-97'),
animal_ty('dog','julio','31-03-97')));
insert into breeder
values('jane',animals_nt(animal_ty('cat','an','31-03-97'),
animal_ty('cat','jame','31-03-97'),
animal_ty('cat','killer','31-03-97')));
commit;
5、查询嵌套表
select name,birthdate from
table(select animals from breeder);
select name,birthdate from
table(select animals from breeder
where breedername='03y');
select breedername,name,birthdate from
breeder a,table(a.animals) b
三、嵌套表的特点:
1、对象复用:如果编写面向对象的代码,就提高了重用以前编写的代码模块的机会。同样,如果创建面向对象的数据库对象,也就提高了数据库对象能够被重用的机会。
2、标准支持:如果创建标准的对象,那么它们被重用的机会就会提高。如果有多个应用或多个表使用同一数据库对象集合,那么它就是既成事实的数据库对象标准。
3、定义访问路径:对于每一个对象,用户可定义在其上运行的过程和函数,从而可以使数据和访问此数据的方法联合起来。有了用这种方式定义的访问路径,就可以标准化数据访问的方法并提高对象的可复用性。
分享到:
相关推荐
在Oracle数据库系统中,嵌套表和可变数组是两种重要的高级数据类型,它们提供了处理复杂数据结构的能力,尤其在存储和操作集合类数据时显得非常有用。在本Oracle课堂中,我们将深入探讨这两个概念以及它们在实际应用...
MongoDB的文档可以包含其他文档和数组,这与SQL的集合嵌套表和VARRAY有相似之处。通过比较和学习这两种不同的数据库模型,可以加深对复杂数据存储和查询的理解。 总结来说,SQL的集合嵌套表和VARRAY是处理多值数据...
在Oracle数据库中,表连接是查询多个表时非常重要的一个概念。通过不同的连接方式,可以实现数据的有效关联和检索。本文将对Oracle中的几种主要表连接方式进行详细介绍:内连接(Inner Join)、自然连接(Natural ...
Oracle 优化常用概念 Oracle 优化器是 Oracle 数据库管理系统中一个核心组件,负责根据用户提交的 SQL 语句生成最优的执行计划,以提高查询效率。以下是 Oracle 优化器中的一些常用概念: CBO/RBO Oracle 优化...
首先,我们了解表连接的基本概念,它通过FROM子句中的多个表和WHERE子句中的连接条件来组合数据。Oracle提供了多种连接类型,包括嵌套循环连接、群集连接、排序合并连接、笛卡尔连接、哈希连接和索引连接。 1. 嵌套...
通过以上几个方面的介绍,我们可以看到“精通Oracle10编程.pdf”这一资料中涉及的知识点主要包括:Oracle 10g的基础介绍、嵌套表类型的应用、引用变量的声明、游标的使用以及变量命名规则等方面。这些内容对于深入...
在你提到的"oracle 脚本"主题中,我们可以深入探讨Oracle数据库中的PL/SQL编程、分区表、嵌套表以及触发器等相关知识点。 1. **PL/SQL基本结构**: PL/SQL是Oracle数据库的内置过程式语言,结合了SQL的查询能力与...
Oracle支持三种主要的集合类型:关联数组、嵌套表和VARRAY。 - 可以在程序的声明部分使用`TYPE`关键字定义特定的集合类型,然后创建该类型的变量实例。 **集合或集合实例** - “集合”可以指代PL/SQL变量,如关联...
#### 一、Oracle多表查询基础概念 在Oracle数据库中,多表查询是非常重要的一个部分,它可以帮助我们从多个表中提取所需的数据。对于初学者来说,掌握多表查询的基础非常重要。 - **基本语法**: ```sql SELECT ...
虽然它们与嵌套表有许多相似之处,比如结构和元素访问方式,但在存储和管理方面有所不同。 总的来说,Oracle中的集合和成员函数是处理大量数据的强大工具,它们能够有效地组织和操作数据,提高代码的效率和可维护性...
对于特定的列类型,如LOB、varray和嵌套表,它们存储在自己的段中,并且可以为这些段指定STORAGE子句以覆盖表级别指定的存储参数。 管理员还应考虑表的其他高级管理特性,如表分区和索引组织表。分区表可以将数据...
在Oracle中创建表时,可以为表定义各种约束以确保数据完整性。常见的约束包括: 1. **主键约束**:用于唯一标识表中的每一行。 2. **外键约束**:用于定义表与表之间的关系。 3. **唯一性约束**:确保列中的值不...
2. Recursive SQL 概念:有时为了执行用户发出的一个 SQL 语句,Oracle 必须执行一些额外的语句,我们将这些额外的语句称之为 ''recursive calls'' 或 ''recursive SQL statements''。这些语句是 Oracle 内部执行的...
第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java 第42章 java 简介 第43章 jdbc 程序设计 第44章 java 存储过程 第ⅶ部分 指 南 第45章 ...
Java_oracle01.pdf可能涵盖了SQL的基本概念,如SELECT语句用于数据查询,INSERT用于插入新记录,UPDATE用于更新现有记录,以及DELETE用于删除记录。此外,可能会讲解到表的创建、修改和删除(CREATE, ALTER, DROP)...
这使得Oracle能够处理复杂的数据类型和结构,如嵌套数据类型、对象类型和对象关系特性。 **3.2 Oracle 管理工具简介** Oracle提供了一系列工具来简化数据库的安装、配置、升级和管理,如通用安装器、数据库配置助手...
7. `嵌套表 (Nested Table)`: 嵌套表是Oracle中的复杂数据类型,它可以存储一个元素列表,元素个数不限。`CREATE TYPE`用于定义对象类型,然后`CREATE TABLE`创建包含嵌套表的表。存储方式`STORE AS`定义了嵌套表...