如何利用Microsoft Query查询数据库表结构

来源:岁月联盟 作者:朱岁松 时间:2010-07-12

【摘要】    目的: 研究Microsoft Query在读取数据库表结构中的应用。方法: 使用数据库接口工具ODBC以及查询工具Microsoft Query读取数据库的表结构。结果: 使用Microsoft Query读取数据库的表结构,对于非机专业人员而言,清除了数据挖掘的入门障碍。结论:Microsoft Query读取数据库表结构,使用简单,功能强大,是数据挖掘的好工具。

【关键词】  Microsoft Query; 表结构

  Microsoft Query 是Microsoft Office的一个自带程序,用于检索外部的数据源,其用途非常广泛[1]。Microsoft Query支持的外部数据源有:Microsoft SQL Server OLAP Services7.0以上、Microsoft Access 2000以上、dBASE、Microsoft FoxPro、Microsoft Excel、Oracle、Paradox、SQL Server以及文本文件数据库。读取其它数据库,可安装其专用的ODBC接口。在统计工作中,经常需要自定义的查询数据[2],这就需要对数据库的表结构有一个全面的了解。而作为普通用户,终端上一般只安装了Microsoft Office而没有安装数据库开发工具。因此,Microsoft Query就为普通用户提供了读取数据库的一条捷径。以下给出Microsoft Query读取数据库表结构的方法。

  1  创建ODBC
   
  本例中,服务器名sgcwserver,数据库名bagl。
      
  打开Windows控制面板/管理工具/ODBC,进入“ODBC数据源管理器”界面。进入“创建到SQL SERVER的新数据源”界面,输入数据源名称sgcwserver_bagl,描述:病案库数据源。服务器:sgcwserver。
   
  按[下一步],选择“使用用户输入登录ID和密码的SQL Server验证”。录入登录ID及密码。本例登录ID为sa,密码为空。按[下一步],选择所需连接的数据库bagl。按[下一步],选择“测试数据源”,测试成功后确定。

  2  从数据库中读取表结构
   
  运行Microsoft Query程序,程序位于Office安装目录中,如"C:\Program Files\Microsoft Office\Office10\MSQRY32.EXE",运行后显示:
       
  在菜单中选择‘文件/执行SQL’,录入以下SQL语句:
        
  SELECT "表名"=case when a.colorder=1 then d.name else '' end,
        
  "表说明"=case when a.colorder=1 then isnull(f.value,'') else '' end,
        
  "字段号"=a.colorder,
        
  "字段名"=a.name,
       
  "标识"=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
   
  "主键"=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 = a.id AND colid=a.colid))) then '√' else '' end,


        
  "类型"=b.name,
        
  "占用字节数"=a.length,
        
  "字长"=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
        
  "小数位"=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
        
  "允许空"=case when a.isnullable=1 then '√'else '' end,
       
  "默认值"=isnull(e.text,''),
        
  "字段说明"=isnull(g.[value],'')
        
  FROM syscolumns a
           
  left join systypes b on a.xtype=b.xusertype
           
  inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
            
  left join syscomments e on a.cdefault=e.id
           
  left join sysproperties g on a.id=g.id and a.colid=g.smallid
         
  left join sysproperties f on d.id=f.id and f.smallid=0
        
  Order by a.id,a.colorder
   
  选择数据源sgcwserver_bagl以及bagl数据库,输入登录ID和密码,本例登录ID为sa,密码为空;选择保存文件名‘查询数据库表结构’,按‘执行’键。

  以下为查询结果:
   
  3  讨论
   
  全面了解数据库的表结构,是进行数据挖掘的前提。根据数据库表的结构关系,就可以对同一个数据库中相关的表进行链接查询,也可以对多个数据库进行综合查询[3]。在众多的应用程序中,存在着很多的信息孤岛,其数据库相互间往往是不关联的。假设,检验数据库和病案数据库互不关联,如果要将检验库中的阳性结果与病案库中的诊断信息链接查询,则需要以住院病人的ID号为链接,对检验库和病案库中的数据进行查询。而进行查询的基础,就是全面了解数据库的表结构。因此,使用Microsoft Query读取数据库的表结构,对于非机专业人员而言,清除了数据挖掘的入门障碍。

【】
    1 微软公司. 使用 Microsoft Query 检索外部数据 [EB/OL].(2007?05?16)[2007?05?18] http://office.microsoft.com/zh?cn/excel/HA100996642052.aspx.

  2 黄日琼.环境下医院统计数据挖掘的应用与展望.医院统计,2006,9(1):66~67.

  3 微软公司.关于 Microsoft Query 中联接用法的说明[EB/OL]. (2007?02?02)[2007?05?18]http://support.microsoft.com/kb/136699/zh?cn.