我需要一个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中列的长度。
答案 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
。