北大青鸟oracle学习笔记12


关系型数据库理论中字段值必须是单值,而oracle中允许在一个字段中存储一个表的内容。

如:员工表中的外键 部门编号,oracle中这个字段可以存放部门的记录而并不是一个外键,这样查询时候的效率会提高。

 

可变数组:

创建带有可变数组的表

 

创建可变数组基类型

create or replace type 基类型名 as object(字段清单);

创建可变数组类型

create or replace 可变数组类型名 as varray(最大行数) of 可变数组的基类型;

 

实例:

create or replace type mingxitype as object

(

goodsid varchar(15),

incount int,

providerid varchar(10)

);

 

create or replace type arrmingxitype as varray(100) of mingxitype;

 

创建一个主表

create table instock

(

orderid int primary key,

indate date,

mingxi arrmingxitype

);

 

利用构造函数插入数据

insert into instock values(

'200208070001',

to_date('2002-08-07','yyyy-mm-dd'),

arrmingxitype(

mingxitype('101',10,'S01'),

mingxitype('102',20,'S02')

)

);

 

查询

select * from instock;则显示对象而并不是像关系数据库那样的表单

select * from table(

select s.mingxi from instock s where orderid = 1001

);

此时显示的是可变数组中的信息而没有主表中的信息。

table函数要求内部子查询必须明确确定一条记录!

 

修改可变数组比较麻烦,必须修改整个数组的记录。所以可变数组常使用在基本不需要修改的记录(如历史记录等)

update instock set mingxi = arrmingxitype(

mingxitype('101',20,'S01'),

mingxitype('102',30,'S02')

)where orderid = '200208070001';

 

 

删除记录操作与关系型数据库一致,删除整条主记录。

delete from instock where orderid = '1001';

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值