SQL2005 查询表字段信息(是否标示列 字段名 主键 字段类型 长度 小数位 允许空 默认值

2010-06-22  蒋小虎 

  1. /* 适用环境:   SQL2005或2005以上  
  2.     适用情景:  例如你是进入公司的,或者这个数据库你已经很久没有看过了忘记里面字段的用途,  
  3.     但是你又必须对这个公司的数据里面的数据库不甚了解  
  4.     你想了解这个数据库的字段的一些说明 你就需要使用他了。当然前提条件是他的字段里面  
  5.     有这个字段的相关说明    
  6. */ SELECT   
  7. (case  when a.colorder=1 then d.name  else   ''  end)  as  表名,--如果表名相同就返回空  
  8.     a.colorder as  字段序号,  
  9.     a.name as  字段名,  
  10.     (case  when COLUMNPROPERTY( a.id,a.name, 'IsIdentity' )=1 then  '√' else   ''  end)  as  标识,  
  11.     (case  when (SELECT count(*) FROM sysobjects--查询主键  
  12.                     WHERE (name in   
  13.                             (SELECT name FROM sysindexes   
  14.                             WHERE (id = a.id)  AND (indid in   
  15.                                     (SELECT indid FROM sysindexkeys  
  16.                                       WHERE (id = a.id) AND (colid in   
  17.                                         (SELECT colid FROM syscolumns  
  18.                                         WHERE (id = a.id) AND (name = a.name))  
  19.                         )))))   
  20.         AND (xtype = 'PK' ))>0 then  '√'   else   ''  end)  as  主键,--查询主键END  
  21. b.name as  类型,  
  22. a.length as  占用字节数,  
  23. COLUMNPROPERTY(a.id,a.name,'PRECISION'as   长度,  
  24. isnull(COLUMNPROPERTY(a.id,a.name,'Scale' ),0)  as  小数位数,  
  25. (case  when a.isnullable=1 then  '√' else   ''  end)  as  允许空,  
  26. isnull(e.text,''as  默认值,  
  27. isnull(g.[value],'' ) AS 字段说明   
  28. FROM syscolumns a left join systypes b   
  29. on a.xtype=b.xusertype  
  30. inner join sysobjects d   
  31. on a.id=d.id and d.xtype='U'  and d.name<> 'dtproperties'   
  32. left join syscomments e  
  33. on a.cdefault=e.id  
  34. left join sys.extended_properties g  
  35. on a.id=g.major_id AND a.colid = g.minor_id   
  36.     where d.name='PE_U_ValliMessage' --所要查询的表  
  37. order by a.id,a.colorder  
  38.   
  39. select * from sys.extended_properties--字段信息表  
  40. select * from syscolumns--表字段信息表  
  41. select * from sysobjects where sysobjects.type='u'  --数据库所有的用户创建的表的信息  
  42. select * from sysobjects where sysobjects.type='s'  --数据库所有的系统表的信息  
  43. select * from syscomments --所有的触发器的东西  
  44. --COLUMNPROPERTY 返回有关列或过程参数的信息 
313°/3132 人阅读/0 条评论 发表评论

登录 后发表评论