北大青鸟oracle学习笔记11
簇:
有公共列的两个或多个表的集合
簇表中的数据存储在公共数据块中
簇键:
唯一标识符
创建簇:
减少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的对象继承来实现。
相关文档:
这学期准备花少许时间研究一下oracle,台式机的Ubuntu不稳定老坏,放弃了linux上使用oracle的想法,在自己笔记本上装了一个oracle 10g express版本,学习一下。
本来还想用云端虚拟化一下oracle,实验失败,老老实实让oracle侵入我的系统。。。囧
安装完 ......
sql plus 保存sql语句
save 'd:\sql.txt';将oracle缓存区中的sql语句存入文件。
get 'd:\sql.txt';此时sql语句被加载到oracle缓存区,使用run;命令执行sql语句。
@'d:\sql.txt';加载sql语句并直接执行。
oracle中的函数
1. 转换函数
TO_CHAR(number[,format])
将一个数值转换成与之等价的字符串.如果不指 ......
表分区维护:
添加分区:
Alter table student add partition 分区名 values less than(100);
删除分区:
Alter table student drop partition 分区名;
截短分区:
Alter table student truncate partition 分区名;
合并分区:
Alter table student merge partitions 分区名,...,分区名 into partition 新分区名; ......
1 - / , . ; :
"text" 时间分隔符号,除了标准的几个,还允许用文字作为分割符号。
例如 to_char(sysdate,'YYYY"年"mm"月"dd"日"')=2008年04月24日
2 AD
A.D. 即拉丁文Anno Domini的简写,表示公元.会根据nls的不同转换为公元或者ad等
无特殊注意事项
3 AM
A.M. 上 ......