嵌套表用法详解(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 ; 从回收站删除
嵌套表用法详解(PLSQL)的更多相关文章
- 1:CSS中一些@规则的用法小结 2: @media用法详解
第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule ...
- oracle数据库定时任务dbms_job的用法详解
本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点 1.创建job: variable jobno number; ...
- 【转】 #define用法详解
#define用法详解 1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”.被定义为“宏”的标识符称为“宏名”.在编译预处理时,对程序中所有出现的“宏 ...
- Vue1.0用法详解
Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
- CSS中伪类及伪元素用法详解
CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...
- jQuery 事件用法详解
jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jque ...
- SVN组成中trunk,branches and tags功能用法详解
SVN组成中trunk,branches and tags功能用法详解 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
随机推荐
- [Android]Android数据的四种存储方式
存储方式 Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/d ...
- postman参数获取不到原因
在使用postman时,会发现经常提示参数错误,然而代码没有问题,仔细一看,原来是粘贴复制参数到postman时,前后有空格.
- hdoj:2031
#include <iostream> #include <string> using namespace std; int main() { int N,R; string ...
- 追踪go语言(golang)的新版本新特性【摘抄】
Go 2.0 新特性展望:详细 go2.0 会有什么新特性呢?下图是一个老外的调侃,他不希望发生这样的事情(please don't make it happen).我倒是希望其中一些实现,比如泛型和 ...
- 和我一起学Effective Java之类和接口
类和接口 使类和成员的可访问性最小 信息隐藏(information hiding)/封装(encapsulation):隐藏模块内部数据和其他实现细节,通过API和其他模块通信,不知道其他模块的内部 ...
- python中利用redis构建任务队列(queue)
Python中的使用标准queue模块就可以建立多进程使用的队列,但是使用redis和redis-queue(rq)模块使这一操作更加简单. Part 1. 比如首先我们使用队列来简单的储存数据:我们 ...
- mui---获取入口文件对象
在做APP的时候,发现在Hbuilder里面,如果是已经加载过的页面,可以通过 plus.webview.getWebviewById(id),拿到加载的页面对象,这里的id默认是url,但是入口文件 ...
- 第八天py
我发现这个老师讲的太基础只是我懒得跳过而已想慢慢听 列表公共功能 索引 切片 for 长度 特有功能 翻转 排序 追加 插入 索引位置 删除
- 7.13python多进程
所以引入了 多进程*(异步) 处理效率高 #!/usr/bin/env python #!--*--coding:utf-8 --*-- #!@Time :2018/7/13 19:26 #! ...
- mysql迁移sqlserver
数据迁移的工具有很多,基本SSMA团队已经考虑到其他数据库到SQL Server迁移的需求了,所以已经开发了相关的迁移工具来支持. 此博客主要介绍MySQL到SQL Server数据迁移的工具:SQL ...