Oracle数据字典(用于做代码生成工具用)
2008-03-26 08:30
429 查看
/**************************************************************
* User Table 表名、注释、字段类型、字段长度、是否为空、等
***************************************************************/
SELECT COL.TABLE_NAME as TNAME,
TCOM.COMMENTS as TCMT,
COL.COLUMN_NAME as COL_NM,
CCOM.COMMENTS as COL_CMT,
COL.DATA_TYPE as TYPE_CD,
DECODE(COL.DATA_TYPE, 'NUMBER',COL.DATA_PRECISION ||'.'||COL.DATA_SCALE, COL.DATA_LENGTH) as LENGTH,
COL.NULLABLE as NULL_YN,
COL.DATA_DEFAULT as D_DEFAULT,
COL.NUM_DISTINCT as NUM_DISTINCT
FROM USER_TAB_COLUMNS COL,
USER_TAB_COMMENTS TCOM,
USER_COL_COMMENTS CCOM
WHERE COL.TABLE_NAME = TCOM.TABLE_NAME AND
COL.TABLE_NAME = CCOM.TABLE_NAME AND
COL.COLUMN_NAME = CCOM.COLUMN_NAME AND
COL.TABLE_NAME = 'ITEM_CLASS'
ORDER BY COL.TABLE_NAME ,
COL.COLUMN_ID
--> PK 数据库主键
SELECT COL.TABLE_NAME as TNAME,
TCOM.COMMENTS as TCMT,
COL.COLUMN_NAME as COL_NM,
CCOM.COMMENTS as COL_CMT,
COL.COLUMN_ID ID,
PKCOL.COLUMN_POSITION AS PK,
COL.DATA_TYPE as TYPE_CD,
DECODE(COL.DATA_TYPE, 'NUMBER',COL.DATA_PRECISION ||'.'||COL.DATA_SCALE, COL.DATA_LENGTH) as LENGTH,
COL.NULLABLE as NULL_YN,
COL.DATA_DEFAULT as D_DEFAULT,
COL.NUM_DISTINCT as NUM_DISTINCT
FROM USER_TAB_COLUMNS COL,
USER_TAB_COMMENTS TCOM,
USER_COL_COMMENTS CCOM,
( SELECT AA.TABLE_NAME, AA.INDEX_NAME, AA.COLUMN_NAME, AA.COLUMN_POSITION
FROM USER_IND_COLUMNS AA, USER_CONSTRAINTS BB
WHERE BB.CONSTRAINT_TYPE = 'P'
AND AA.TABLE_NAME = BB.TABLE_NAME
AND AA.INDEX_NAME = BB.CONSTRAINT_NAME
-- AND AA.TABLE_NAME IN ('ITEM_CLASS') -- 이것 풀면 좀더 빠름
) PKCOL
WHERE COL.TABLE_NAME = TCOM.TABLE_NAME
AND COL.TABLE_NAME = CCOM.TABLE_NAME
AND COL.COLUMN_NAME = CCOM.COLUMN_NAME
AND COL.TABLE_NAME = 'ITEM_CLASS'
AND COL.COLUMN_NAME = PKCOL.COLUMN_NAME(+)
AND COL.TABLE_NAME = PKCOL.TABLE_NAME(+)
ORDER BY COL.TABLE_NAME ,
COL.COLUMN_ID
/**************************************************************
* 能区别字段是否是主键的
***************************************************************/
SELECT USER_TAB_COLUMNS.TABLE_NAME as TNAME,
USER_TAB_COMMENTS.COMMENTS as TCMT,
USER_TAB_COLUMNS.COLUMN_NAME as COL_NM,
USER_COL_COMMENTS.COMMENTS as COL_CMT,
USER_TAB_COLUMNS.DATA_TYPE as TYPE_CD,
DECODE(USER_TAB_COLUMNS.DATA_TYPE, 'NUMBER',USER_TAB_COLUMNS.DATA_PRECISION ||'.'||USER_TAB_COLUMNS.DATA_SCALE, USER_TAB_COLUMNS.DATA_LENGTH) as LENGTH,
USER_TAB_COLUMNS.NULLABLE as NULL_YN
FROM USER_TAB_COLUMNS,
USER_TAB_COMMENTS,
USER_COL_COMMENTS
WHERE USER_TAB_COLUMNS.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
AND USER_TAB_COMMENTS.TABLE_TYPE = 'TABLE' AND ( USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_CODE'
OR USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_FROM_DATE' )
ORDER BY USER_TAB_COLUMNS.TABLE_NAME ,
USER_TAB_COLUMNS.COLUMN_ID
--> 表名,最大的,最小
select tname, '', MAX(col1), MAX(col2)
from (
SELECT USER_TAB_COLUMNS.TABLE_NAME as TNAME,
decode(USER_TAB_COLUMNS.COLUMN_NAME,'ITEM_CODE', USER_TAB_COLUMNS.COLUMN_NAME, '') COL1,
decode(USER_TAB_COLUMNS.COLUMN_NAME,'ITEM_FROM_DATE', USER_TAB_COLUMNS.COLUMN_NAME, '') COL2
FROM USER_TAB_COLUMNS,
USER_TAB_COMMENTS,
USER_COL_COMMENTS
WHERE USER_TAB_COLUMNS.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
AND USER_TAB_COMMENTS.TABLE_TYPE = 'TABLE'
AND ( USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_CODE'
OR USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_FROM_DATE' )
ORDER BY USER_TAB_COLUMNS.TABLE_NAME ,
USER_TAB_COLUMNS.COLUMN_ID
)
group by tname
/**************************************************************
*
***************************************************************/
SELECT AA.TABLE_NAME, AA.INDEX_NAME, AA.COLUMN_NAME, AA.COLUMN_POSITION
FROM SYS.DBA_IND_COLUMNS AA, SYS.DBA_CONSTRAINTS BB
WHERE AA.TABLE_OWNER = 'IMPORT'
--AND AA.TABLE_NAME IN ('ITEM_CLASS')
AND BB.CONSTRAINT_TYPE = 'P'
AND AA.TABLE_OWNER = BB.OWNER
AND AA.TABLE_NAME = BB.TABLE_NAME
AND AA.INDEX_NAME = BB.CONSTRAINT_NAME
ORDER BY AA.TABLE_NAME, AA.COLUMN_POSITION
* User Table 表名、注释、字段类型、字段长度、是否为空、等
***************************************************************/
SELECT COL.TABLE_NAME as TNAME,
TCOM.COMMENTS as TCMT,
COL.COLUMN_NAME as COL_NM,
CCOM.COMMENTS as COL_CMT,
COL.DATA_TYPE as TYPE_CD,
DECODE(COL.DATA_TYPE, 'NUMBER',COL.DATA_PRECISION ||'.'||COL.DATA_SCALE, COL.DATA_LENGTH) as LENGTH,
COL.NULLABLE as NULL_YN,
COL.DATA_DEFAULT as D_DEFAULT,
COL.NUM_DISTINCT as NUM_DISTINCT
FROM USER_TAB_COLUMNS COL,
USER_TAB_COMMENTS TCOM,
USER_COL_COMMENTS CCOM
WHERE COL.TABLE_NAME = TCOM.TABLE_NAME AND
COL.TABLE_NAME = CCOM.TABLE_NAME AND
COL.COLUMN_NAME = CCOM.COLUMN_NAME AND
COL.TABLE_NAME = 'ITEM_CLASS'
ORDER BY COL.TABLE_NAME ,
COL.COLUMN_ID
--> PK 数据库主键
SELECT COL.TABLE_NAME as TNAME,
TCOM.COMMENTS as TCMT,
COL.COLUMN_NAME as COL_NM,
CCOM.COMMENTS as COL_CMT,
COL.COLUMN_ID ID,
PKCOL.COLUMN_POSITION AS PK,
COL.DATA_TYPE as TYPE_CD,
DECODE(COL.DATA_TYPE, 'NUMBER',COL.DATA_PRECISION ||'.'||COL.DATA_SCALE, COL.DATA_LENGTH) as LENGTH,
COL.NULLABLE as NULL_YN,
COL.DATA_DEFAULT as D_DEFAULT,
COL.NUM_DISTINCT as NUM_DISTINCT
FROM USER_TAB_COLUMNS COL,
USER_TAB_COMMENTS TCOM,
USER_COL_COMMENTS CCOM,
( SELECT AA.TABLE_NAME, AA.INDEX_NAME, AA.COLUMN_NAME, AA.COLUMN_POSITION
FROM USER_IND_COLUMNS AA, USER_CONSTRAINTS BB
WHERE BB.CONSTRAINT_TYPE = 'P'
AND AA.TABLE_NAME = BB.TABLE_NAME
AND AA.INDEX_NAME = BB.CONSTRAINT_NAME
-- AND AA.TABLE_NAME IN ('ITEM_CLASS') -- 이것 풀면 좀더 빠름
) PKCOL
WHERE COL.TABLE_NAME = TCOM.TABLE_NAME
AND COL.TABLE_NAME = CCOM.TABLE_NAME
AND COL.COLUMN_NAME = CCOM.COLUMN_NAME
AND COL.TABLE_NAME = 'ITEM_CLASS'
AND COL.COLUMN_NAME = PKCOL.COLUMN_NAME(+)
AND COL.TABLE_NAME = PKCOL.TABLE_NAME(+)
ORDER BY COL.TABLE_NAME ,
COL.COLUMN_ID
/**************************************************************
* 能区别字段是否是主键的
***************************************************************/
SELECT USER_TAB_COLUMNS.TABLE_NAME as TNAME,
USER_TAB_COMMENTS.COMMENTS as TCMT,
USER_TAB_COLUMNS.COLUMN_NAME as COL_NM,
USER_COL_COMMENTS.COMMENTS as COL_CMT,
USER_TAB_COLUMNS.DATA_TYPE as TYPE_CD,
DECODE(USER_TAB_COLUMNS.DATA_TYPE, 'NUMBER',USER_TAB_COLUMNS.DATA_PRECISION ||'.'||USER_TAB_COLUMNS.DATA_SCALE, USER_TAB_COLUMNS.DATA_LENGTH) as LENGTH,
USER_TAB_COLUMNS.NULLABLE as NULL_YN
FROM USER_TAB_COLUMNS,
USER_TAB_COMMENTS,
USER_COL_COMMENTS
WHERE USER_TAB_COLUMNS.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
AND USER_TAB_COMMENTS.TABLE_TYPE = 'TABLE' AND ( USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_CODE'
OR USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_FROM_DATE' )
ORDER BY USER_TAB_COLUMNS.TABLE_NAME ,
USER_TAB_COLUMNS.COLUMN_ID
--> 表名,最大的,最小
select tname, '', MAX(col1), MAX(col2)
from (
SELECT USER_TAB_COLUMNS.TABLE_NAME as TNAME,
decode(USER_TAB_COLUMNS.COLUMN_NAME,'ITEM_CODE', USER_TAB_COLUMNS.COLUMN_NAME, '') COL1,
decode(USER_TAB_COLUMNS.COLUMN_NAME,'ITEM_FROM_DATE', USER_TAB_COLUMNS.COLUMN_NAME, '') COL2
FROM USER_TAB_COLUMNS,
USER_TAB_COMMENTS,
USER_COL_COMMENTS
WHERE USER_TAB_COLUMNS.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
AND USER_TAB_COMMENTS.TABLE_TYPE = 'TABLE'
AND ( USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_CODE'
OR USER_TAB_COLUMNS.COLUMN_NAME = 'ITEM_FROM_DATE' )
ORDER BY USER_TAB_COLUMNS.TABLE_NAME ,
USER_TAB_COLUMNS.COLUMN_ID
)
group by tname
/**************************************************************
*
***************************************************************/
SELECT AA.TABLE_NAME, AA.INDEX_NAME, AA.COLUMN_NAME, AA.COLUMN_POSITION
FROM SYS.DBA_IND_COLUMNS AA, SYS.DBA_CONSTRAINTS BB
WHERE AA.TABLE_OWNER = 'IMPORT'
--AND AA.TABLE_NAME IN ('ITEM_CLASS')
AND BB.CONSTRAINT_TYPE = 'P'
AND AA.TABLE_OWNER = BB.OWNER
AND AA.TABLE_NAME = BB.TABLE_NAME
AND AA.INDEX_NAME = BB.CONSTRAINT_NAME
ORDER BY AA.TABLE_NAME, AA.COLUMN_POSITION
相关文章推荐
- 分享一个自己开发的数据字典与动态代码生成工具
- Oracle数据字典视图之DICT_COLUMNS(提纲掣领的一篇,该视图是一个工具对深入了解数据字典)
- ASP.NET Web开发框架之五 设计时支持,代码生成,数据字典 ExtAspNet控件扩展
- 企业库数据层代码生成工具:DataTierGenerator for Enterprise Library
- Oracle 生成数据字典
- SQL Server2005+、MySQL、Oracle 数据库字典生成工具
- 数据字典生成工具之旅(6):NVelocity语法介绍及实例
- 利用代码生成工具Database2Sharp设计数据编辑界面
- 数据字典生成工具之旅系列文章导航
- 数据库生成数据字典工具(PDMREAD)图解
- 数据对象类代码的生成小工具
- mybatis 代码生成工具支持oracle mysql 分页
- ORACLE生成数据字典的语句
- Android代码覆盖率数据(Emma生成的)过滤工具
- 发一个自己写的小工具,生成类似petshop4的数据操作方面的代码
- Oracle 代码生成小工具免费下载
- PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳。在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据。即使使用了第二个参数,也会重复,最好的方案是结
- 一个简单的生成sql2005数据字典的工具
- 使用RTW代码生成工具是将MATLAB用于C开发流程的最好的方法(转自恒润科技)
- 数据字典生成工具之旅(2):数据字典生成工具及文档工具作用介绍