北大青鸟oracle学习笔记11

本文介绍了 Oracle 中的簇优化技术及其创建方法,包括簇表、簇键的概念及使用场景。同时,还详细讲解了抽象数据类型的概念和创建方式,以及如何在表中使用自定义类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

簇:

有公共列的两个或多个表的集合

簇表中的数据存储在公共数据块中

 

簇键:

唯一标识符

 

创建簇:

减少I/O操作,减少磁盘空间,但是插入性能降低。

两张表中有共同的列,比如学生表中有班级编号,班级表中也有班级编号,可以将班级编号存放在簇中

 

create cluster 簇名(

字段名 类型

)tablespace 表命名空间;

 

create index 索引名 on cluster 簇名;

 

create table 表名1 (

字段名 类型

) cluster 簇名(簇中字段名);

 

create table 表名2(

字段名 类型

)cluster 簇名(簇中字段名);

 

 

 

 

 

oracle对象数据类型:

 

抽象数据类型:

包含一个或多个子类型的数据类型

不局限于oracle的标准数据类型

可以用于其他数据类型中

 

语法:create [or replace] type 类型名 as object(列名 类型,...)[not final];

not final 关键字限制派生子类型。

如:

create type addresstype as object(

province varchar(20),

city varchar(30),

street varchar(40)

)

 

在建表时即可使用自定义的addresstype类型

create table studentObj(stuname varchar(18),stuAddress addresstype);

 

插入数据

insert into studentobj values('Tom',addresstype('吉林省','长春','前进大街'));

 

查询数据

select * from studentobj;

结果为       Tom

addresstype('吉林省','长春','前进大街')

 

select s.stuname,s.stuaddress.province,s.stuaddress.city from studentobj s;-- 必须使用别名

这样查询就查询出平时分列的数据。更新也是如此。

 

如果需要扩展则添加not final

扩展新类型:create type 子类型 under 父类型(

扩展新属性...

);

 

基于类型可以创建对象表:

create table 表名 of 类型名;

即可和关系表一样使用。

 

也可以使用对象的构造函数来插入数据

insert into 对象表名 values (类型名(参数...)); -- 插入实例

 

更新也可以使用直接更新和构造函数更新两种方法。

 

创建带有方法的对象类型

create [or replace] type 类型名 as object(

--声明属性

stuid varchar(10),

stuname varchar(10),

--声明方法

member function getName return stuname,

member procedure setName(varchar stuname)

)

具体等之后的教程

 

通过oracle的继承可以发现方便了不少,以前那些学生表,教师表在创建的时候都要重复定义姓名、性别、出生年月等字段,现在可以通过oracle的对象继承来实现。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值