频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

如何获取MSSQLServerOracelAccess数据字典信息

来源: 作者: 出处:巧巧读书 2006-05-06 进入讨论组

  --表说明
  SELECT dbo.sysobjects.name AS TableName,
  dbo.sysproperties.[value] AS TableDesc
  FROM dbo.sysproperties INNER JOIN
  dbo.sysobjects ON dbo.sysproperties.id = dbo.sysobjects.id
  WHERE (dbo.sysproperties.smallid = 0)
  ORDER BY dbo.sysobjects.name
  
  --字段说明
  SELECT dbo.sysobjects.name AS TableName, dbo.syscolumns.colid,
  dbo.syscolumns.name AS ColName, dbo.sysproperties.[value] AS ColDesc FROM dbo.sysproperties INNER JOIN
  dbo.sysobjects ON dbo.sysproperties.id = dbo.sysobjects.id INNER JOIN
  dbo.syscolumns ON dbo.sysobjects.id = dbo.syscolumns.id AND
  dbo.sysproperties.smallid = dbo.syscolumns.colid
  ORDER BY dbo.sysobjects.name, dbo.syscolumns.colid
  
  --主键、外键信息(简化)
  select
  c_obj.name  as CONSTRAINT_NAME
  ,t_obj.name  as TABLE_NAME
  ,col.name  as COLUMN_NAME
  ,case col.colid
  when ref.fkey1 then 1
  when ref.fkey2 then 2
  when ref.fkey3 then 3
  when ref.fkey4 then 4
  when ref.fkey5 then 5
  when ref.fkey6 then 6
  when ref.fkey7 then 7
  when ref.fkey8 then 8
  when ref.fkey9 then 9
  when ref.fkey10 then 10
  when ref.fkey11 then 11
  when ref.fkey12 then 12
  when ref.fkey13 then 13
  when ref.fkey14 then 14
  when ref.fkey15 then 15
  when ref.fkey16 then 16
  end   as ORDINAL_POSITION
  from
  sysobjects c_obj
  ,sysobjects t_obj
  ,syscolumns col
  ,sysreferences ref
  where
  permissions(t_obj.id) != 0
  and c_obj.xtype in ('F ')
  and t_obj.id = c_obj.parent_obj
  and t_obj.id = col.id
  and col.colid  in
  (ref.fkey1,ref.fkey2,ref.fkey3,ref.fkey4,ref.fkey5,ref.fkey6,ref.fkey7,ref.fkey8,ref.fkey9,ref.fkey10,ref.fkey11,ref.fkey12,ref.fkey13,ref.fkey14,ref.fkey15,ref.fkey16)
  and c_obj.id = ref.constid
  union
  select
  i.name   as CONSTRAINT_NAME
  ,t_obj.name  as TABLE_NAME
  ,col.name  as COLUMN_NAME
  ,v.number  as ORDINAL_POSITION
  from
  sysobjects c_obj
  ,sysobjects t_obj
  ,syscolumns col
  ,master.dbo.spt_values v
  ,sysindexes i
  where
  permissions(t_obj.id) != 0
  and c_obj.xtype in ('UQ' ,'PK')
  and t_obj.id = c_obj.parent_obj
  and t_obj.xtype = 'U'
  and t_obj.id = col.id
  and col.name = index_col(t_obj.name,i.indid,v.number)
  and t_obj.id = i.id
  and c_obj.name = i.name
  and v.number > 0
  and v.number <= i.keycnt
  and v.type = 'P'
  
  order by CONSTRAINT_NAME, ORDINAL_POSITION
  
  --主键、外键对照(简化)
  select
  fc_obj.name  as CONSTRAINT_NAME
  ,i.name   as UNIQUE_CONSTRAINT_NAME
  from
  sysobjects fc_obj
  ,sysreferences r
  ,sysindexes i
  ,sysobjects pc_obj
  where
  permissions(fc_obj.parent_obj) != 0
  and fc_obj.xtype = 'F'
  and r.constid = fc_obj.id
  and r.rkeyid = i.id
  and r.rkeyindid = i.indid
  and r.rkeyid = pc_obj.id
  
  ----------------- ORACLE -------------------
  --表信息
  select * from all_tab_comments t
  where owner='DBO'
  
  --列信息
  select * from all_col_comments t
  where owner='DBO'
  
  --主键、外键对照
  select OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, R_OWNER, R_CONSTRAINT_NAME
  from all_constraints
  where owner='DBO' and (Constraint_Type='P' or Constraint_Type='R')
  
  --主键、外键信息
  select *
  from all_cons_columns
  where owner='DBO'
  order by Constraint_Name, Position
  
  ------------------------- Access ------------------------
  //Access中的系统表MSysobjects存储属性的字段是二进制格式,不能直接分析可以采用ADO自带的OpenSchema方法获得相关信息
  
  //use ADOInt.pas
  //po: TableName
  //DBCon:TADOConnection
  /ds:TADODataSet
  
  --表信息
  DBCon.OpenSchema(siTables, VarArrayOf([Null, Null, 'Table']), EmptyParam, ds);
  
  --列信息
  DBCon.OpenSchema(siColumns, VarArrayOf([Null, Null, 'po']), EmptyParam, ds);
  
  --主键
  DBCon.OpenSchema(siPrimaryKeys, EmptyParam, EmptyParam, ds);
  
  --主键、外键对照
  DBCon.OpenSchema(siForeignKeys, EmptyParam, EmptyParam, ds);浏览URL http://www.qqread.com/mysql/s266044.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章