嵌套表用法详解(PLSQL)

嵌套表

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

嵌套表指的是一个数据表定义事同时加入了其他内部表的定义,这一概念是在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 ; 从回收站删除

原文地址:https://www.cnblogs.com/kawashibara/p/9094052.html

时间: 2024-10-09 22:12:32

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

boboJquery表单插件ajaxForm用法详解

插件主要的方法: ajaxFormajaxSubmitformToArrayformSerialize fieldSerializefieldValueclearFormclearFieldsresetForm 示例代码: 1 // wait for the DOM to be loaded 2 $(document).ready(function() {  3    // bind 'myForm' and provide a simple callback function   4    $

Oracle中常用的to_Char用法详解

Oracle中常用的to_Char用法详解(有FMT的详细列表) The following are number examples for the to_char function. to_char(1210.73, '9999.9') would return '1210.7' to_char(1210.73, '9,999.99') would return '1,210.73' to_char(1210.73, '$9,999.00') would return '$1,210.73'

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

第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule是一个声明,为CSS提供执行或怎么表现的指令.每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么.这是一个通用的语法,尽管每个at-rule有其它语法变体.常规规则 常规规则遵循下面的语法: 复制代码 代码如下: @[KEYWORD] (RULE); @charset

[转载]ssget 用法详解 by yxp

总结得很好的ssget用法.....如此好文,必须转载. 原文地址: http://blog.csdn.net/yxp_xa/article/details/72229202 ssget 用法详解 by yxp 2017/04/10 ALisp 编程时 ssget 是无处不在的,灵活的选择集构建方式,可以轻松的处理图形,体现了 Lisp 相对其他语言的优点. 然而强大的 ssget 估计很多人都不清楚用法,包括各种教程对 ssget 的描述都不够完善,本文试图总结 ssget 的用法,不足之处请

Vue1.0用法详解

Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 4 5 6 7 8 9 10 11 <div id="app"> {{message}} <input v-model="message"> </div> new Vue({ ele: '#app', data: { message:

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

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

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.:

oracle中的exists 和not exists 用法详解

oracle中的exists 和not exists 用法详解 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>

wp_list_categories函数用法详解

本以为写完新手教程之后,可以不写新手应用方面的文章了的,可今天又有朋友在群里问如何显示每个分类下文章数量这个基础性问题,看来Wordpress中文化还有很长的一段路要走,我们任重而道远啊!好,解决你的问题先:正如标题所说,Wordpress是用wp_list_categories这个函数来显示分类的,其用法是:< ?php wp_list_categories('arguments'); ?>arguments即参数,默认参数设置为: $defaults = array('show_optio