oracle----面向对象数据表-----嵌套表和可变数组(了解)

[code]
嵌套表(了解 oracle独有的技术,开发中不使用)
在一个表中还包含了另一个子表
例如: 一个部门可能承接多个项目

平时都是建立两张表,一张是部门 一张是项目,
而oracle可以允许在部门表中放一张项目表
----这样其实是面向对象的做法,也就是允许自定义类型,我们把一张表变成一个类型呗
原始的写法:
CREATE TABLE project(
proid NUMBER(4) PRIMARY KEY NOT NULL,
proname VARCHAR2(50) ,
prodate DATE,
deptno NUMBER(2),
CONSTRAINT department_project_deptno_fk FOREIGNE KEY(deptno) deptno REFERENC KEY(department.deptno) ON DELETE CASCADE
);
下面面向对象的写法:
CREATE TYPE project_ty AS OBJECT( //相当于定义了字符串类型一样,但是这个类型没有给名称,比如varchar 和varchar2都是string的名称一样
proid NUMBER(4) , //不能有主键,不能写not null,只能定义值
proname VARCHAR2(50) ,
prodate DATE
);
/
CREATE TYPE project_nt AS TABLE OF project_ty //nt 表示嵌套,这是给project_ty类型定义了个名称
/

CREATE TABLE department(
deptno NUMBER(2) PRIMARY KEY NOT NULL,
dname VARCHAR2(50) NOT NULL,
projects project_nt
)NESTED TABLE projects STORE AS project_nt_tab _temp; //嵌套表的内容给存到这个地方

INSERT INTO department(deptno,dname,projects)
VALUES(1,'技术部',
project_nt(
project_ty(1001,'ERP',SYSDATE),
project_ty(1001,'OA',SYSDATE),
project_ty(1001,'CRM',SYSDATE),
)
)
可变数组(了解---oracle特性,嵌套表的升级版)
实际上就是将内部的嵌套表的内容的长度进行了限制

CREATE TYPE project_list AS VARRAY(10) OF project_nt
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值