Oracle生成数据字典的sql

数据字典一般需要 表名、表中文名、字段名、字段中文名、字段数据类型、字段中文名、是否主键这几列。具体获取逻辑如下。 (需将过滤条件中的用户改为自己指定的用户

select  
    t.owner,      --用户
    t.table_name, --表英文名
    tc.comments,  --表中文名
    c.column_id,  --字段序号
    c.column_name,--字段英文名
    c.data_type||case c.data_type  
	                     when 'number'  then  '('||c.data_length||','||c.data_scale||')' 
                         when 'timestamp' then ''
                         when 'date' then ''
                         else  '('||c.data_length||')'
                  end as data_type,   --数据类型,
    cc.comments as col_comments, case when co.column_name is not null then 'y' else 'n' end as prim_flg  --是否主键
from all_tables t  --表基本信息
left join all_tab_comments tc  --表中文名
  on t.table_name =tc.table_name
  and t.owner =tc.owner
left join all_tab_columns c  --字段基本信息
  on t.table_name =c.table_name
  and t.owner =c.owner
left join all_col_comments cc   --字段中文名
  on c.column_name = cc.column_name
  and c.table_name =cc.table_name
  and c.owner = cc.owner
left join all_constraints aco   --获取表主键约束
  on t.table_name =aco.table_name
  and t.owner =aco.owner
  and aco.constraint_type = 'p'
left join all_cons_columns co  --获取主键约束对应字段
  on c.owner =co.owner
  and c.table_name=co.table_name
  and c.column_name = co.column_name
  and aco.constraint_name = co.constraint_name
where t.owner ='指定用户' 
order by t.owner,t.table_name,c.column_id

查询结果如下:

具体需求个人情况适当修改。

如:字段类型这一列我只考虑了常用的那几类

表约束中除了有主键约束还有非空约束 等等

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值