oracle-对象表

http://www.blogjava.net/decode360/archive/2008/10/16/286802.html

create or replace type person as object(
  name varchar2(10),
  sex varchar2(2),
  birthday date,
  age number(2)
);

两种创建对象表的方式

第一,
create table t(
  person_col person,
  emp_id number,
  dep_id number
);

第二,

create table t of person;

delete from t;
insert into t values(‘ww‘,‘f‘,sysdate-1,23);
insert into t values(‘ni‘,‘m‘,sysdate-2,24);
insert into t values(‘ss‘,‘f‘,sysdate-3,25);

insert into t values (
  person(‘张三‘,‘男‘,sysdate-1,23),
  100,
  10);

insert into t values (
  person(‘张四‘,‘女‘,sysdate-2,44),
  101,
  11);
 
insert into t values (
  person(‘wo‘,‘fe‘,sysdate-3,44),
  102,
  11);
insert into t values (
  person(‘ni‘,‘f‘,sysdate-4,45),
  103,
  12);
delete from t where emp_id=101;

在sqlplus中用下面语句可以看到内容
select * from t;

但在sqldeveloper中看不到person_col列的值,是如下的值

[KYC_ACC.PERSON]    102    11
[KYC_ACC.PERSON]    103    12

一定要用别名,否则引起岐义(schema名字)
select t1.person_col.age from t t1;

时间: 2024-12-28 23:44:44

oracle-对象表的相关文章

Oracle对象之表和索引的介绍

对于传统的关系数据库管理系统(RDBMS),比如Oracle.MySQL等,都是在数据库中存储和检索数据,在Oracle中,用schema来表示逻辑数据结构或模式对象的集合,模式对象是用户创建的,用来直接引用数据库中的数据,其中最重要的对象是表和索引. 表是数据库中数据组织的而基本单位,一个表描述了一个实体,比如一张students表,我们用一个表名(students)和一些列来定一个该实体,每一列表示学生的一个属性,而表呢,表示一些行的集合,每一行都记录一个特定的学生的信息. 索引在数据库中,

PL/SQL和Oracle对象

PL/SQL -一.变量 01)引用变量 -- 查询并打印7839的姓名和薪水 declare    --定义变量保存姓名和薪水    --pename varchar2(20);    --psal   number;    pename emp.ename%type;    psal   emp.sal%type; begin   -- 得到1234的姓名和薪水   select ename,sal into pename,psal from emp where empno=1234;   

Oracle 重建表(rename)注意事项总结

一.概述 前一段时间,有一个DBA朋友在完成重建表(rename)工作后,第二天早上业务无法正常运行,出现数据无法插入的限制和错误,后来分析才发现,错误的原因是使用rename方式重建表以后,其它引用这个表的外键约束指向没有重新定义到这个重建的新表中,从而导致这些表在插入新数据时,违反数据完整性约束,导致数据无法正常插入.影响了业务大概有1个多小时,真是一次血淋淋的教训啊. 使用rename方式重建表是我们日常DBA维护工作中经常使用的一种方法,因为CTAS+rename这种配合方式,非常实用和

十二、oracle 数据库(表)的逻辑备份与恢复

一.介绍逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程.逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程.物理备份即可在数据库open的状态下进行也可在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行. 二.备份(导出)导出分为导出表.导出方案.导出数据库三种方式.导出使用exp命令来完成的,该命令常用的选项有:userid:用于指定执行导出操作的用户名,口令,连接字符串tables:用于指定执行导出操作

Oracle的表空间和sqlplus

1.  表空间的概念 以前接触过的数据库都没有听到过表空间这个词,在前一段时间看到Oracle数据库的时候发现表空间无处不在.所以表空间在Oracle数据库中应该是一个很常用并且很重要的概念. 表空间是一种逻辑上的概念,逻辑上的存储单元.那么什么叫做逻辑上的存储单元呢.现在通过两张图来对比 表空间(table space)是Oracle数据库中最大的逻辑结构.从逻辑上说,Oracle数据库是由若干个表空间组成的.表空间与数据库的物理结构有着十分密切的关系,它与磁盘上若干个数据文件相对应. 从物理

Oracle 建表常用数据类型的详解

创建表时,必须为表的各个列指定数据类型.如果实际的数据与该列的数据类型不相匹配,则数据库会拒绝保存.如为学生指定出生日期为"1980-13-31". 在Oracle中,常见的数据类型有: 字符串:字符串分为定长类型char和变长类型varchar2. 数字:整数 number(整数位),小数 number(总长度,小数位),只写number,表示无限制. 日期:date类型,可以保存年月日时分秒. 问题:Oracle中为什么字符串类型为varchar2,它与varchar有什么关系?

oracle之表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)

数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表空间(tablespace).段(segment).区(extent).块(block),这些都是oracle数据库在数据文件中组织数据的基本单元.现在我们来理解这些概念. 块是数据存储的物理单位,也是数据文件中最基础的单位,数据直接存储在块上.是oracle空间分配的最小单位.oracle中的块大

oracle 锁表 及 解锁

很久没有写博客了.不知道写什么 今天,让我清一张表的数据,结果清了之后,系统直接不动了,就好像服务器挂死了一样. 后来找了半天才发现,原来是我删除数据之后没有提交事物造成了数据库锁表,然后又不明白了, 什么是锁表呢,于是就上网去查 查了半天,大多数都是说怎么解决锁表和查询锁表的,但是只了解方法还不够,又想知道原理,于是 就继续往深里查查到了oracle的锁机制 由于数据库是多用户同时使用的共享资源,当多个用户并发的存取事物的时候,数据库中就会发生多个进程 同时操作同一个数据的情况,若对并发操作不

Oracle建表插数据等等

Oracle的表的管理:表名和列的命名规则 . 必须以字母开头 . 长度不能超过30个字符 . 不能使用Oracle的保留字 . 只能使用如下字符 column_name-Z,column_name-z,0-9,$,#等 Oracle支持的数据类型 字符类:char 定长,最大2000个字节. 例子:char(10) 如果内容为'小杰'则前四个字节放'小杰',后添6个空格补全varchar2() 变长 最大4000个字符. 例子:varchar2(10) '小杰',Oracle分配四个字符.这样

Oracle外部表详解(转载)

(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中数据格式与创建表时access parameters中的定义需保持同步,适当用skip=1) 外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储