MySQL、Oracle、SQL server数据字典查询

1、mysql

---mysql 数据字典   view & sql
select
    a.ORDINAL_POSITION as ordinalPosition,
	a.TABLE_NAME as tableName,
	b.TABLE_COMMENT  as tableComment,
	a.COLUMN_NAME as columnName,
	a.COLUMN_TYPE as columnType,
	a.COLUMN_COMMENT as columnComment,
	case when k.COLUMN_NAME  is not NULL  then '✓' else null end as ispk
from information_schema.COLUMNS a
left join information_schema.TABLES b 
       on a.TABLE_NAME = b.TABLE_NAME
left join information_schema.KEY_COLUMN_USAGE k
       on k.TABLE_NAME  = a.TABLE_NAME 
      and k.COLUMN_NAME  = a.COLUMN_NAME 
      and k.CONSTRAINT_NAME = 'PRIMARY'
where a.TABLE_SCHEMA = '?'
  and a.TABLE_NAME in ('###',
'###',
'###',
'###',
'###',
'###')
order by b.TABLE_NAME,a.ORDINAL_POSITION;

2、Oracle

--oracle
SELECT 
     c.COLUMN_ID
     ,c.table_name
     ,d.COMMENTS  table_cname
     ,c.COLUMN_NAME 
     ,CASE WHEN c.DATA_TYPE in ('VARCHAR2','CHAR') THEN c.DATA_TYPE ||'('||c.data_length||')'
           WHEN c.DATA_TYPE = 'NUMBER' AND c.DATA_PRECISION IS NOT NULL AND c.DATA_SCALE IS NOT NULL 
                THEN c.DATA_TYPE ||'('||c.DATA_PRECISION||','||c.DATA_SCALE ||')'
           WHEN c.DATA_TYPE = 'NUMBER' AND c.DATA_PRECISION IS NOT NULL AND c.DATA_SCALE IS  NULL 
                THEN c.DATA_TYPE ||'('||c.DATA_PRECISION ||')'
           ELSE c.DATA_TYPE END AS DATA_TYPE
      , e.COMMENTS col_cname   
      ,CASE WHEN s.constraint_name IS NOT NULL THEN 'Y' ELSE NULL END AS ispk    
FROM ALL_TAB_COLUMNS c
INNER JOIN ALL_TAB_COMMENTS d
ON c.OWNER = d.OWNER 
AND c.TABLE_NAME  = d.TABLE_NAME 
INNER JOIN ALL_COL_COMMENTS e
ON c.OWNER = e.OWNER 
AND c.TABLE_NAME  = e.TABLE_NAME 
AND c.COLUMN_NAME  = e.COLUMN_NAME 
LEFT JOIN (select a.TABLE_NAME, a.constraint_name,  a.column_name 
from user_cons_columns a, user_constraints b 
where a.constraint_name = b.constraint_name 
  and b.constraint_type = 'P' ) s
  ON c.TABLE_NAME  = s.TABLE_NAME
  AND c.COLUMN_NAME  = s.column_name
WHERE 1=1
  AND c.OWNER = 'ODSS'
  AND c.TABLE_NAME = 'REP_TRANSACTIONS'
 ORDER BY 2,1 ;

3、SQL server

--sqlserver ddl
SELECT
c.colid colid,
s.name AS table_name,
'' AS table_Cname, 
c.name AS col_name,
'' AS col_cname,
case when t.name like '%char%' or t.name in ('binary','raw') then t.name + '(' + cast(c.[LENGTH] as varchar(10)) + ')'
     when t.name in ('numeric','decimal') then t.name + '(' + cast(c.xprec as varchar(10)) +',' + cast(c.xscale as varchar(10)) + ')'
     else t.name 
end as date_type,
CASE WHEN EXISTS (SELECT 1 FROM sysobjects WHERE xtype = 'PK' AND name 
          IN (SELECT name FROM sysindexes WHERE indid 
              IN (SELECT indid FROM sysindexkeys
     WHERE id = c.id AND colid = c.colid))) THEN ' √ ' ELSE '' 
END AS ispk 
FROM syscolumns c -- 数据表字段
INNER JOIN sysobjects s-- 数据对象
ON s.id = c.id
INNER JOIN systypes t -- 数据类型
ON c.xtype = t.xtype
WHERE (s.xtype = 'U')
order by s.id,c.colid;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值