甲骨文数据库查询

Oracle DB query

我需要一个 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%';

我在哪里得到 table 名称,列名是一个主键。现在我需要 BYTES 中的数据类型和列的长度。

加入 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 并将其乘以 ALL_TABLES.

中的 NUM_ROWS