目标
整理数据库文档是一个比较常见的工作,例如oracle数据库提供了很多内置视图,可以非常方便的查询出各种表信息,字段信息,大大提升生成数据库文档的效率,下面简单一种方式。
我们的目标是统计出数据库表中如下的信息。
sql实现,基于内置视图
SELECT a.COLUMN_NAME as "字段名",b.COMMENTS as "含义",
a.DATA_TYPE || '(' || a.DATA_LENGTH || ')' as "数据类型",
---内置视图中a.NULLABLE为Y表示非必填,这里用decode做一下转换
decode(a.NULLABLE,'Y','N','N','Y','N') as "必填",
---查询主外键我是根据自己业务匹配的,不具有通用性,自己可以适当调整
case when instr(a.COLUMN_NAME,'S_GUID') > 0 then 'PK'
when substr(a.COLUMN_NAME,length(a.COLUMN_NAME)-1)
= 'ID' then 'FK' else '' END as "主外键",
b.COMMENTS as "备注"
from
ALL_TAB_COLUMNS a,ALL_COL_COMMENTS b
WHERE
a.OWNER=b.OWNER AND a.TABLE_NAME=b.TABLE_NAME AND a.COLUMN_NAME=b.COLUMN_NAME
--AND a.OWNER='LOANCORE'
AND a.TABLE_NAME='TEST'
ORDER BY
--排序,主键是一个字段,外键是仅次于主键的顺序,最后是业务字段
case when instr(a.COLUMN_NAME,'S_GUID') > 0 then 1
when substr(a.COLUMN_NAME,length(a.COLUMN_NAME)-1) = 'ID' then 2
else 3 END,
a.COLUMN_ID;
sql结果展示:
结束
查出数据复制进文档就可以了。
查看oracle各类内置视图的链接:内置视图