Oracle DB查询

时间:2015-05-04 02:42:17

标签: oracle oracle11g oracle10g

我需要一个Oracle数据库查询,我可以在其中获取主键,数据类型和BYTES中属性的长度。

目前我在做:

SELECT cols.table_name, cols.column_name
FROM all_constraints cons, all_cons_columns cols
WHERE cons.constraint_type = 'P' 
  AND cons.constraint_name = cols.constraint_name
  AND cons.owner like 'DBP%';

我获取表名,列名是主键。现在我需要数据类型和BYTES中列的长度。

1 个答案:

答案 0 :(得分:1)

加入all_tab_columns以获取数据类型和(最大)长度(以字节为单位)。

select
    cols.table_name,
    cols.column_name,
    tab_cols.data_type,
    tab_cols.data_length
from all_constraints cons
join all_cons_columns cols
    on cons.owner = cols.owner
    and cons.constraint_name = cols.constraint_name
join all_tab_columns tab_cols
    on cols.owner = tab_cols.owner
    and cols.table_name = tab_cols.table_name
    and cols.column_name = tab_cols.column_name
where cons.constraint_type = 'P'
    and cons.owner like 'DBP%';

您没有指定但我认为您想要最大长度。如果您想要列的实际使用大小,可以使用AVG_COL_LENGTH并将其乘以NUM_ROWS中的ALL_TABLES