mssql2005查询表结构

SQL2005 查询表字段信息(是否标示列 字段名 主键 字段类型 长度 小数位 允许空 默认值说明)
2009-09-01 09:43

转自:jacky4955的专栏

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

你可能感兴趣的:(SQL,Server)