`
hekui1016
  • 浏览: 50014 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE概念之嵌套表

 
阅读更多

转自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 database 10g 完整参考手册part1

    第34章 收集器(嵌套表和可变数组) 第35章 使用大对象 第36章 面向对象的高级概念 第Ⅶ部分 Oracle中的Java 第37章 Java简介 第38章 JDBC程序设计 第39章 Java存储过程 第40章 Oracle真正应用群集 第41章 网格体系...

    oracle database 11g 高清完整中文版part2

     第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 ...

    oracle可变数组

    可变数组与嵌套表相似,也是一种集合。一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可...从概念上讲,可变数组是一个限制了行集合的嵌套表。

    ORACLE9i_优化设计与系统调整

    §14.8.1 嵌套连接- 181 §14.8.2 合并连接- 183 第15章 使用优化器提示 183 §15.1 提示(Hint)概念 184 §15.1.1 提示的指定 184 §15.2 使用提示 185 §15.2.1 提示的指定 185 §15.2.1.1 ALL_ROWS 186 §15.2....

    Oracle Database 11g初学者指南--详细书签版

     ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中  ·主要内容——每章要介绍的具体内容列表  ·实践练习——演示如何应用在每章学到的关键技术  ·学习效果测试——对学习效果的快速自我评估 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    Oracle_Database_11g完全参考手册.part2/3

    第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整...

    Oracle_Database_11g完全参考手册.part3/3

    第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整...

    oracle database 11g 完整参考手册中文高清完整版part3

     第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 ...

    oracle database 11g完全参考手册 高清完整版part1 共3部分

     第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    1.2.1 Oracle概念 10 1.2.2 SQL概念 10 1.2.3 操作系统概念 11 1.3 单实例体系结构 11 1.3.1 单实例数据库体系结构 11 1.3.2 分布式系统体系结构 13 1.4 实例内存结构 15 1.4.1 数据库缓冲区缓存 16 1.4.2 ...

    对于 Oracle 的 rownum 问题

    但如果就是想要用 rownum > 10 这种条件的话话就要用嵌套语句,把 rownum 先生成,然后对他进行查询。 select * from (selet rownum as rn,t1.* from a where ...) where rn >10 一般代码中对结果集进行分页...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    核心概念——Oracle Database 11g主题呈现在按逻辑组织的章节中 主要内容——每章要介绍的具体内容列表 实践练习——演示如何应用在每章学到的关键技术 学习效果测试——对学习效果的快速自我评估 注意——与所介绍...

    数据库作业-电子商城系统.doc

    数据库作业-电子商城系统....(3)设计对象类型、方法以及建立对象表,包括对象引用类型、数组、嵌套表等。 (4)设计插入、修改、删除、查询操作,10个以上。 (5)用ORACLE实现(3)、(4),并把命令和结果放报告中

    oracle从入门到精通

    1.1、基本概念: ...................................................................................................................................8 1.2、数据库安全 : ..............................

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    1.2.1 Oracle概念 10 1.2.2 SQL概念 10 1.2.3 操作系统概念 11 1.3 单实例体系结构 11 1.3.1 单实例数据库体系结构 11 1.3.2 分布式系统体系结构 13 1.4 实例内存结构 15 1.4.1 数据库缓冲区缓存 16 1.4.2 ...

    Oracle从入门到精通

    1.1、基本概念:........................................... 1.2、数据库安全:......................................... 1.3、基本的SQL SELECT 语句................................ 1.4、SELECT语句...........

Global site tag (gtag.js) - Google Analytics