取得SQL Server2000数据库表的结构

None.gif SELECT
None.gif  
None.gif表名
= case   when  a.colorder = 1   then  d.name  else   ''   end
None.gif字段序号
= a.colorder,
None.gif字段名
= a.name, 
None.gif标识
= case   when   COLUMNPROPERTY ( a.id,a.name, ' IsIdentity ' ) = 1   then   ' '   else   ''   end
None.gif主键
= 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
None.gif类型
= b.name, 
None.gif占用字节数
= a.length, 
None.gif长度
= COLUMNPROPERTY (a.id,a.name, ' PRECISION ' ), 
None.gif小数位数
= isnull ( COLUMNPROPERTY (a.id,a.name, ' Scale ' ), 0 ), 
None.gif允许空
= case   when  a.isnullable = 1   then   ' ' else   ''   end
None.gif默认值
= isnull (e. text , '' ), 
None.gif字段说明
= isnull (g. [ value ] , '' )
None.gif
None.gif
FROM  syscolumns a  left   join  systypes b  on  a.xtype = b.xusertype 
None.gif     
inner   join  sysobjects d  on  a.id = d.id   and  d.xtype = ' U '   and   d.name <> ' dtproperties '  
None.gif     
left   join  syscomments e  on  a.cdefault = e.id 
None.gif     
left   join  sysproperties g  on  a.id = g.id  and  a.colid = g.smallid  
None.gif
None.gif
where  g.name = ' MS_Description '
None.gif
None.gif
order   by  a.id,a.colorder
None.gif

详细版本:

None.gif
None.gif
SELECT  
None.gif 表名
= case   when  a.colorder = 1   then  d.name  else   ''   end ,
None.gif 表说明
= case   when  a.colorder = 1   then   isnull (f.value, '' else   ''   end ,
None.gif 字段序号
= a.colorder,
None.gif 字段名
= a.name,
None.gif 标识
= case   when   COLUMNPROPERTY ( a.id,a.name, ' IsIdentity ' ) = 1   then   ' ' else   ''   end ,
None.gif 主键
= case   when   exists ( SELECT   1   FROM  sysobjects  where  xtype = ' PK '   and  name  in  (
None.gif  
SELECT  name  FROM  sysindexes  WHERE  indid  in (
None.gif   
SELECT  indid  FROM  sysindexkeys  WHERE  id  =  a.id  AND  colid = a.colid
None.gif  ))) 
then   ' '   else   ''   end ,
None.gif 类型
= b.name,
None.gif 占用字节数
= a.length,
None.gif 长度
= COLUMNPROPERTY (a.id,a.name, ' PRECISION ' ),
None.gif 小数位数
= isnull ( COLUMNPROPERTY (a.id,a.name, ' Scale ' ), 0 ),
None.gif 允许空
= case   when  a.isnullable = 1   then   ' ' else   ''   end ,
None.gif 默认值
= isnull (e. text , '' ),
None.gif 字段说明
= isnull (g. [ value ] , '' ),
None.gif 索引名称
= isnull (h.索引名称, '' ),
None.gif 索引顺序
= isnull (h.排序, '' )
None.gif
FROM  syscolumns a
None.gif 
left   join  systypes b  on  a.xtype = b.xusertype
None.gif 
inner   join  sysobjects d  on  a.id = d.id   and  d.xtype = ' U '   and   d.name <> ' dtproperties '
None.gif 
left   join  syscomments e  on  a.cdefault = e.id
None.gif 
left   join  sysproperties g  on  a.id = g.id  and  a.colid = g.smallid  
None.gif 
left   join  sysproperties f  on  d.id = f.id  and  f.smallid = 0
None.gif 
left   join ( -- 这部分是索引信息,如果要显示索引与表及字段的对应关系,可以只要此部分
None.gif
   select  索引名称 = a.name,c.id,d.colid
None.gif   ,排序
= case  indexkey_property(c.id,b.indid,b.keyno, ' isdescending ' )
None.gif    
when   1   then   ' 降序 '   when   0   then   ' 升序 '   end
None.gif  
from  sysindexes a
None.gif   
join  sysindexkeys b  on  a.id = b.id  and  a.indid = b.indid
None.gif   
join  ( -- 这里的作用是有多个索引时,取索引号最小的那个
None.gif
     select  id,colid,indid = min (indid)  from  sysindexkeys
None.gif    
group   by  id,colid) b1  on  b.id = b1.id  and  b.colid = b1.colid  and  b.indid = b1.indid
None.gif   
join  sysobjects c  on  b.id = c.id  and  c.xtype = ' U '   and   c.name <> ' dtproperties '
None.gif   
join  syscolumns d  on  b.id = d.id  and  b.colid = d.colid
None.gif  
where  a.indid  not   in ( 0 , 255 )
None.gif ) h 
on  a.id = h.id  and  a.colid = h.colid
None.gif
where  g.name = ' MS_Description '  
None.gif
-- where d.name='要查询的表'    --如果只查询指定表,加上此条件
None.gif
order   by  a.id,a.colorder
None.gif
None.gif

以上两段SQL语句可查证来源于邹建 http://blog.csdn.net/zjcxc 并经过本人少量修改。

转载于:https://www.cnblogs.com/vboy/archive/2005/04/05/132188.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值