因为要分析旧系统的原因, 我需要得到一张表的各个字段的信息:列名,类型长度,是否为空,是PK还是FK,注释信息我已经写的SQL:
select t.COLUMN_NAME 列名, t.DATA_TYPE || '(' || t.DATA_LENGTH || ')' 类型长度, t.NULLABLE 是否为空
from user_tab_columns t
where table_name = '***'但是,还有“是PK还是FK”,“注释信息”这两个信息不知道在哪个表中获取,请达人告知。

解决方案 »

  1.   

    注释信息从这个表获得:
    SELECT * FROM USER_COL_COMMENTS T;
    是PK还是FK可以从这个表获得:
    SELECT * FROM User_Constraints t;
      

  2.   

    column 列名 format a20
    column 类型长度 format a30
    column 是否为空 format a20
    column pk_or_fk format a10
    column comments format a100select t.COLUMN_NAME 列名, t.DATA_TYPE || '(' || t.DATA_LENGTH || ')' 类型长度, t.NULLABLE 是否为空 , decode(d.constraint_type,'P','PK','R','FK',d.constraint_type) pk_or_fk, b.comments
    from user_tab_columns t join user_col_comments b on(t.table_name=b.table_name and t.column_name=b.column_name)
                            join user_cons_columns c on(t.table_name=c.table_name and t.column_name=b.column_name)
                            join user_constraints d on(c.table_name=d.table_name and c.constraint_name=d.constraint_name)
    where table_name = '***' 
      

  3.   

    谢谢楼上两位的回答.另外, zcs_1, 你的sql语句有误, 我用了一下, 返回的记录不对: 记录数过多, 主键外键的情况也有误.