oracle 构造类似desc命令和查看表中字段所占空间

本文介绍如何使用SQL查询Oracle数据库中特定表的结构信息,包括字段名称、类型及是否允许为空等,并提供了一种计算表中字段占用空间大小的方法。

//我们常常使用desc命令查看表结构: SQL> desc scott.emp; Name Type Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO NUMBER(4) ENAME VARCHAR2(10) Y JOB VARCHAR2(9) Y MGR NUMBER(4) Y HIREDATE DATE Y SAL NUMBER(7,2) Y COMM NUMBER(7,2) Y DEPTNO NUMBER(2) Y //下面我们来构造类似的查询语句: select o.obj#,o.name object_name, c.column_id, c.column_name, c.data_type, c.data_length, c.data_precision, c.data_scale, c.nullable from sys.tab$ t,dba_tab_cols c,sys.obj$ o,sys.user$ u where o.obj#=t.obj# and o.name=c.table_name and c.owner=u.name and o.owner#=u.user# and u.name='SCOTT' and o.name='EMP' order by obj#,column_id; // //有时候,我们闲着没事做,想知道我们建立的表中,所有字段所占用的空间, //除了通过查询视图user_tab_columns,知道表中每个字段的长度精度,然后再计算外,我们有下面的方法: //这个方法可以准确的计算出表中字段所占用的空间大小: select object_name, sum(decode(data_type,'NUMBER',floor((col_length+1)/2) + 1,col_length)) table_size from (select object_name, column_name, data_type, decode(data_precision,NULL,data_length,data_precision) col_length from (select o.name object_name, c.column_name column_name, c.data_type, c.data_length, c.data_precision, c.data_scale from sys.tab$ t,dba_tab_cols c,sys.obj$ o,sys.user$ u where o.obj#=t.obj# and o.name=c.table_name and c.owner=u.name and o.owner#=u.user# and u.name='SCOTT' and o.name='EMP' ) tab_cols ) col_len group by object_name; /

原帖:http://topic.youkuaiyun.com/u/20110601/18/ab14e0ff-81a2-407e-b6ce-0a8cbb2e0b6e.html?99366

参考:

[1]http://www.dbainfo.net/oracle-view-table-physical-storage-size.htm

[2]http://www.dbainfo.net/view-table-column-properties-ddl.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值