嵌套表

嵌套表是一种类似于索引表的结构,也可以用于保存多个数据,而且也可以保存复合类型的数据

嵌套表指的是一个数据表定义事同时加入了其他内部表的定义,这一概念是在oracle 8中引入的,它们可以使用SQL进行访问,也可以进行动态扩展。

创建表指定嵌套表存储空间名称

Create table 表名称(

字段名称 类型

……

嵌套表字段名称 嵌套表类型

)NESTED TABLE 嵌套表字段名称 STORE AS 存储空间名称;

定义部门表

DROP TABLE department

Create table department(

Did number,

Deptname varchar(30) not null,

Projects project_nested,

Constraint pk_did primary key(did)

)NESTED TABLE projects STORE AS projects_nested_table;

创建新的对象类型

Create type 类型名称 AS OBJECT(

列名称 数据类型,

列名称 数据类型,

……

列名称 数据类型

);

/

范例:创建一个表示项目类型的对象

Create or replace type kingsql_type as object(

Projectid number,

Projectname varchar(50),

Projectfunds number,

Pubdate date

);

/

CREATE OR REPLACE TYPE kingsql_type AS OBJECT(

projectid NUMBER ,

projectname VARCHAR(50),

projectfunds NUMBER ,

pubdate DATE

) ;

定义嵌套表类型——project_nested

CREATE OR REPLACE TYPE kingsql_nested AS TABLE OF kingsql_type NOT NULL ;

CREATE TABLE department_01 (

did NUMBER ,

deptname VARCHAR(50) NOT NULL ,

qt_column kingsql_nested

) NESTED TABLE qt_column STORE AS kingsql_nested_t1((

projectid NOT NULL ,

projectname NOT NULL ,

projectfunds NOT NULL ,

pubdate NOT NULL)) ;

嵌套表插入数据

insert into department_01 values(

1,--第一列

'hehe1',--第二列

kingsql_nested(kingsql_type(1,'hehe1',1,sysdate),kingsql_type(11,'hehe11',11,sysdate))); 第三列第一行/第三列第二行

插入数据

declare

v1 kingsql_nested:=kingsql_nested(kingsql_type(2,'haha2',2,sysdate));

begin

insert into department_01

values(1,'hehe1',kingsql_nested(kingsql_type(1,'hehe1',1,sysdate),kingsql_type(11,'hehe11',11,sysdate)));

insert into department_01 values(2,'haha2',v1);

end;

/

查询嵌套表数据

select * from the(select department_01.qt_column from department_01 where did=1);

PROJECTID PROJECTNAME     PROJECTFUNDS PUBDATE

---------- -------------------------------------------------- ------------ -------------------

1 hehe1  1  2018-05-21 14:35:32

11 hehe11 11 2018-05-21 14:35:32

select * from the(select department_01.qt_column from department_01 where did=2);

PROJECTID PROJECTNAME PROJECTFUNDS PUBDATE

---------- -------------------------------------------------- ------------ -------------------

2 haha2  2  2018-05-21 14:35:32

select * from the(select department_01.qt_column from department_01 where did=1) where projectid=1;

PROJECTID PROJECTNAME  PROJECTFUNDS PUBDATE

---------- -------------------------------------------------- ------------ -------------------

1 hehe1  1  2018-05-21 14:35:32

直接插入嵌套表数据

insert into the(select department_01.qt_column from department_01 where did=1) values(111,'hehe111',111,sysdate);

Select * from the(select department_01.qt_column from department_01 where did=1);

循环插入一百行

declare
x number:=3;
begin
for x in 3..103 loop
insert into the(select department_01.qt_column from department_01 where did=2) values(x,'hehe',111,sysdate);
end loop;
commit;
end;

直接更新嵌套表数据

update the(select department_01.qt_column from department_01 where did=1) set projectid=1111 where projectid=1;

commit;

select * from the(select department_01.qt_column from department_01 where did=1)

直接删除嵌套表数据

delete the(select department_01.qt_column from department_01 where did=1) where projectid=1111;

commit;

select * from the(select department_01.qt_column from department_01 where did=1);

DROP TABLE department_01 PURGE ; 从回收站删除

嵌套表用法详解(PLSQL)的更多相关文章

  1. 1:CSS中一些@规则的用法小结 2: @media用法详解

    第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下     at-rule ...

  2. oracle数据库定时任务dbms_job的用法详解

    本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点   1.创建job: variable jobno number; ...

  3. 【转】 #define用法详解

    #define用法详解   1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”.被定义为“宏”的标识符称为“宏名”.在编译预处理时,对程序中所有出现的“宏 ...

  4. Vue1.0用法详解

    Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...

  5. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  6. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  7. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  8. jQuery 事件用法详解

    jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jque ...

  9. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

随机推荐

  1. Zookeeper之Zookeeper的Client的分析【转】

    Zookeeper之Zookeeper的Client的分析 1)几个重要概念 ZooKeeper:客户端入口 Watcher:客户端注册的callback ZooKeeper.SendThread:  ...

  2. maven安装及与eclipse集成

    一.maven安装 1,下载地址:http://maven.apache.org/download.cgi 2,解压maven到:C:\Java\apache-maven-3.5.3,目录可以随意. ...

  3. android ROM刷机updater-script单刷补丁包脚本

    ui_print(""); ui_print("-------------------------"); ui_print(" Let's Go &q ...

  4. Java如何清除空格?

    在Java编程中,如何清除/删除空格? 以下示例演示如何使用Util.regex.Pattern类的matcher.replaceAll(stringname)方法来删除空格. package com ...

  5. Nginx 实现负载均衡

    .安装nginx和tomcat 我这里是使用docker安装的.安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001.第二个tomcat的首页随便加了些代 ...

  6. 仿迅雷播放器教程 -- 十年经验大牛对MFC的认识 (7)

    由于上一个教程做界面用的是MFC,所以这里不得不说一下MFC的历史,请看正文:   原文链接:http://blog.csdn.net/sunhui/article/details/319551 作者 ...

  7. SpringBoot------全局异常捕获和自定义异常

    1.添加Maven依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w ...

  8. kettle spoon中“表输入”到“表输出”的乱码问题

    数据库中的数据在不同的数据库中转换来装换去,由于不同库可能使用了不同的字符集,所以可能导致结果数据乱码问题.此次是在一个作业中跑数据,跑完数据前台数据显示出现乱码,检查了作业中的多有中间过程表,包括表 ...

  9. 欢迎访问新博客(pfzheng.tech)

    这两天折腾了几天的服务器,搞了一个临时的个人博客. 最先入手的域名pfzheng.tech,但是发现竟然不支持备案.天哪,我做错了什么,只好再买域名.新域名pfzheng.cn正在备案中. 新博客基于 ...

  10. WMware 安装 Mac OSX

    1,下载unlock.zip工具,破解VMware没有mac选项情况 2. 下载OS X 10.11.1(15B42).cdr 3.MWare虚拟机提示:“锁定文件失败,打不开磁盘或快照所依赖的磁盘” ...