关于表结构的查询可以用sp_help,但是查出来的比较凌乱,而且列名还是英文的,不方便拷贝。
自己根据系统表写了一个查询表结构的语句,方便使用
DECLARE @TableName VarChar(1000) SET @TableName = '要查询表结构的表名' SELECT 列名 = a.name , 类型 = CASE WHEN b.name = 'numeric' THEN b.name + '(' + CAST(a.xprec AS VarChar(5)) + ', ' + CAST(a.xscale AS VarChar(5)) + ')' WHEN b.name = 'varchar' THEN b.name + '(' + CAST(a.length AS VarChar(10)) + ')' WHEN b.name = 'datetime' THEN b.name WHEN b.name = 'int' THEN b.name WHEN b.name = 'bit' THEN b.name WHEN b.name = 'smallint' THEN b.name END , --类型 = b.name , --长度 = a.length , --精度级别 = a.xprec , --小数位数 = ISNULL(a.xscale , '') , 标识 = CASE WHEN COLUMNPROPERTY(a.id , a.name , 'IsIdentity') = 1 THEN '√' ELSE '' END , 主键 = CASE WHEN c.name IS NULL THEN '' ELSE '√' END , 允许空Null = CASE WHEN isnullable = 1 THEN '√' ELSE '' END , 默认值 = ISNULL(d.text , '') , 解释说明 = '' FROM syscolumns a INNER JOIN systypes b ON a.xtype = b.xtype LEFT JOIN(SELECT d.name , d.id , d.colid FROM sysobjects a INNER JOIN sysindexes b ON a.parent_obj = b.id AND a.name = b.name AND a.xtype = 'PK' INNER JOIN sysindexkeys c ON b.id = c.id AND b.indid = c.indid INNER JOIN syscolumns d ON c.id = d.id AND c.colid = d.colid WHERE OBJECT_NAME(a.parent_obj) = @TableName)c ON a.id = c.id AND a.colid = c.colid LEFT JOIN syscomments d ON a.cdefault = d.id WHERE OBJECT_NAME(a.id) = @TableName ORDER BY a.colid
对于查询中用到的一些系统表跟表中的列名的意思,自己去查sql server的联机丛书,相信你能够看明白。