SYSCOLUMNS 了解应用

1.引言

  SQLServer中SYSCOLUMNS表的各个字段的意义

-----列名---------- 数据类型--------------- 描述-------

----name------- --sysname --------------列名或过程参数的名称   eg:select name from sysobjects where type='U'  // U代表用户

-----id -------------int------------ ----------该列所属的表对象 ID,或与该参数关联的存储过程 ID。eg: select name from syscolumns where id=object_id('TableName')//object_id()方法更具表名获取表id

 ----xtype--------- tinyint -----------------systypes 中的物理存储类型。

-----typestat----- tinyint -----------------仅限内部使用。

-----xusertype--- smallint ---------------扩展的用户定义数据类型 ID。

-----length --------smallint --------------systypes 中的最大物理存储长度。

-----xprec---------- tinyint ----------------仅限内部使用。

-----xscale--------- tinyint----------------- 仅限内部使用。

-----colid -----------smallint---------------- 列或参数 ID。

-----xoffset --------smallint---------------- 仅限内部使用。

------bITpos------- tinyint ------------------仅限内部使用。

------reserved -----tinyint -----------------仅限内部使用。

------colstat --------smallint---------------- 仅限内部使用。

------cdefault------- int ---------------------该列的默认值 ID。

 ------domain -------int ---------------------该列的规则或 CHECK 约束 ID。

-------number--------smallint -------------过程分组时(0 表示非过程项)的子过程号。

 -------colorder -----smallint-------------- 仅限内部使用。

------autoval --------varbinary(255) ------仅限内部使用。

 ------offset------------ smallint ------------该列所在行的偏移量;如果为负,表示可变长度行。

-------status----------- tinyint --------------用于描述列或参数属性的位图: 0x08 = 列允许空值。 0x10 = 当添加 varchar 或 varbinary 列时,ANSI 填充生效。

2 .应用

2.1 获取数据库所有表名

select name from sysobjects s where type='U'

2.2 获取某个表的各个字段

select name from syscolumns where id=object_id('SF_BASE_CITY')//'SF_BASE_CITY'为表名

select name, s.type from syscolumns s where id=object_id('SF_BASE_CITY')

显示 字段名称和字段类型,字段类型的对照关系如下:

xtype    类型
34 image
35 text
36 uniqueidentifier
48 tinyint
52 smallint
56 int
58 smalldatetime
59 real
60 money
61 datetime
62 float
98 sql_variant
99 ntext
104 bit
106 decimal
108 numeric
122 smallmoney
127 bigint
165 varbinary
167 varchar
173 binary
175 char
189 timestamp
231 sysname
231 nvarchar
239 nchar

获取执行方法:select distinct a.xtype,b.name from syscolumns a inner join systypes b on a.xtype=b.xtype  order by a.xtype

posted @ 2013-04-19 14:32  呓语  阅读(295)  评论(0编辑  收藏  举报
welcome to this garden! --Chenly