请问在SQL SERVER2000中如何显示表的结构?
就象我现在我想删除某个字段的约束条件,但是我忘了约束名,所以我要想看到表的结构

解决方案 »

  1.   

    select * from sysobjects where type=''
    /*C = CHECK 约束  
    D = 默认值或 DEFAULT 约束 
    F = FOREIGN KEY 约束  
    FN = 标量函数 
    IF = 内嵌表函数 
    K = PRIMARY KEY 或 UNIQUE 约束  
    L = 日志 
    P = 存储过程 
    R = 规则 
    RF = 复制筛选存储过程 
    S = 系统表  
    TF = 表函数 
    TR = 触发器 
    U = 用户表 
    V = 视图 
    X = 扩展存储过程 
    该表中包含该数据库中的所有对象,如有那些表 存储过程 视图  等信息 
    */
      

  2.   


    --功能概述:显示某一表的结构
    DECLARE @tableName nvarchar(100)
    SET @tableName ='brand'--mssql2005
    SELECT  (
    CASE WHEN a.colorder=1 THEN d.name ELSE '' END)表名, 
            a.colorder 字段序号, 
            a.name 字段名, 
            (CASE WHEN COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 THEN '√' ELSE '' END) 标识, 
            (CASE WHEN (
    SELECT COUNT(*) 
    FROM sysobjects 
    WHERE (name IN 
      (SELECT name 
      FROM sysindexes 
      WHERE (id = a.id) AND (indid IN 
    (SELECT indid 
    FROM sysindexkeys 
      WHERE (id = a.id) AND (colid IN 
    (SELECT colid 
    FROM syscolumns 
    WHERE (id = a.id) AND (name = a.name))))))) AND 
    (xtype = 'PK'))>0 THEN '√' ELSE '' END) 主键, 
            b.name 类型, 
            a.length 占用字节数, 
            COLUMNPROPERTY(a.id,a.name,'PRECISION') AS 长度, 
            ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0) AS 小数位数, 
            (CASE WHEN a.isnullable=1 THEN '√' ELSE '' END) 允许空, 
            ISNULL(e.text,'') 默认值, 
            ISNULL(g.[value],'') AS 字段说明 
    FROM syscolumns a 
    LEFT JOIN systypes b ON a.xtype=b.xusertype 
        INNER JOIN sysobjects d ON a.id=d.id AND d.xtype='U' AND d.name <>'dtproperties' 
    LEFT JOIN syscomments e ON a.cdefault=e.id 
    LEFT JOIN sys.extended_properties g  ON a.id=g.major_id AND a.colid = g.major_id 
    WHERE d.name=@tableName 
    ORDER BY a.id,a.colorder --sqlserver 2000 
    SELECT 
    表名=case when a.colorder=1 then d.name else '' end, 
    表说明=case when a.colorder=1 then isnull(f.value,'') else '' end, 
    字段序号=a.colorder, 
    字段名=a.name, 
    标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end, 
    主键=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, 
    类型=b.name, 
    占用字节数=a.length, 
    长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'), 
    小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0), 
    允许空=case when a.isnullable=1 then '√'else '' end, 
    默认值=isnull(e.text,''), 
    字段说明=isnull(g.[value],'') 
    FROM syscolumns a 
    left join systypes b on a.xusertype=b.xusertype 
    inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name <>'dtproperties' 
    left join syscomments e on a.cdefault=e.id 
    left join sysproperties g on a.id=g.id and a.colid=g.smallid 
    left join sysproperties f on d.id=f.id and f.smallid=0 
    where d.name='TWebInfo' --如果只查询指定表,加上此条件 
    order by a.id,a.colorder