嵌套表用法详解(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来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
随机推荐
- 【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用
实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //-----------------Module_logic_gate ...
- ecshop首页调用团购信息产品购买人数
当我们在ecshop后台录入ecshop的团购信息之后,我们在ecshop的前台首页index.php里面,可以看到他能调用ecshop的团购商品信息,其中就包括团购商品的一些价格信息.但是如何在ec ...
- Ubuntu下的Wine&WineQQ
一.安装Wine 1.添加PPA sudo add-apt-repository ppa:ubuntu-wine/ppa 2.更新列表 sudo apt-get update 3.安装Wine sud ...
- 重新入坑-IntelliJ Maven
写Restful的服务,使用IntelliJ+maven,发现有几个依赖总是没法配置好.通过检查POM.xml,发现犯了错误,<dependency>写到了<dependencies ...
- matlab中如何将视频保存成图像
利用MATLAB将视频的每一帧保存成一幅图像,并自动命名.本文方法简单,容易学习. 首先,读入视频.代码如下: mov = VideoReader('xxxxxx.avi'); % 将xxxxxx.a ...
- Mac mysql 修改密码
如果你知道密码: mysqladmin -u root -p password 新密码 MYSQL数据库密码忘记: 1. 在系统偏好 中,中止MYSQL服务.: 2. cd/usr/local/mys ...
- python中,如何将字符串转换为数字(将数字转换为整型),字符串的10转换为整型的10,10.5转换为10
说明: 在实际的应用过程中,有的时候可能会遇到字符串的10,需要将字符串的10转换为数字的10 在此记录下,通过int函数转换的过程. 操作过程: 1.将字符串转换为整型的10 >>> ...
- shell join详解
首先贴一个,join --help Usage: join [OPTION]... FILE1 FILE2 For each pair of input lines with identical jo ...
- python3 日志检索异常抛出异常 raise KeyError(key),KeyError: 'formatters'
原因分析,python3启动时,检索的不是项目包下的目录文件,所以日志文件必须指明路径.我原来的日志方式是: import logging.config log_path = "mlpcap ...
- Android定时执行和停止某任务
一.定义全局变量 int runCount = 0;// 全局变量,用于判断是否是第一次执行 Handler handlerCount = new Handler(); 二.创建Runnable Ru ...