Oracle在关系数据库外,融入了面向对象的元素,比如可以创建type,type之间可以继承,type可以带构造函数、排序函数、各种各样的成员函数、存储过程等等。对象表是指该表的一行就是一个对象,有一个OID(object ID),对象表之间没有主外键关联的概念,为了体现这层关系,oracle中用了ref对象来实现。下面例子,创建一个地址类型,一个人员类型,人员有地址属性,所以在人员类型中设置一个ref address来确定指向他所在地址的指针。--创建地址类型create type address as object(
street varchar2(35),
city varchar2(15),
state char(2),
zip_code integer
); create table addresses of address; --创建地址对象表 --创建人员类型
create type person as object(
first_name varchar2(15),
last_name varchar2(15),
birthday date,
home_address ref address, --指向对应的地址,该地址应该在另外一个对象表中的一行
phone_number varchar2(15)
); CREATE TABLE persons of person; --创建人员对象表 --插入一个地址insert into addresses values(address("nanhai","shenzhen","gd","518054"));insert into addresses values(address("shennan","shenzhen","gd","518057"));--插入一个人员,注意这里的home_address部分是如何插入一个ref address的。
insert into persons values(person("shitou","haha",to_date("1982-07-05","yyyy-mm-dd"),
(select ref(a) from addresses a where street="nanhai"),
"1355555555"));--也可以用下面的过程来插入一个人员记录declare
addref ref address ;
begin
select ref(a) into addref from addresses a where street="nanhai";
insert into persons
values (person("shitou","haha",to_date("1982-07-05","yyyy-mm-dd"),
addref,"1355555555"));
commit;
end;--查询某人的地址信息
select first_name,deref(home_address) from persons;--修改地址
update persons set home_address=(select ref(a) from addresses a where street="shennan");--删除某个人员delete from persons where first_name="shitou";--删除某个地址的相关人员记录
delete from persons where home_address=(select ref(a) from addresses a where street="nanhai");Oracle 判断字符串为""还是NullOracle伪列和伪表相关资讯 Oracle基础教程
- Oracle块编程返回结果集详解 (11/10/2013 10:45:58)
- Oracle基础教程之设置系统全局区 (08/22/2013 14:24:00)
- Oracle基础教程知识点总结 (06/18/2013 07:43:32)
| - Oracle基础教程之tkprof程序详解 (10/22/2013 11:49:50)
- Oracle基础教程之sqlplus汉字乱码 (07/18/2013 16:30:00)
- Oracle 管理之 Linux 网络基础 (02/16/2013 18:37:35)
|
本文评论 查看全部评论 (0)