查询数据表列名和列类型
查询数据表列名和列类型(转)
2011-04-02 13:17:47| 分类: SQL | 标签: |字号大中小 订阅
执行时请把 Your Table Name 替换为你想要查询的数据表的表名即可
查询指定数据表中的所有列的列名:
SELECT name FROM syscolumns
WHERE id = object_id('Your Table Name')
ORDER BY colorder
查询指定数据表中的所有列的列名和数据类型名:
SELECT C.name AS ColumnName, T.name AS ColumnType
FROM syscolumns C
LEFT JOIN systypes T ON C.xusertype = T.xusertype
WHERE C.id = object_id('Your Table Name')
在这里id = object_id('Your Table Name') 可以替换为 object_name(id) = 'Your Table Name'
备注:以上使用于MS SQL Server 
SQL Server没有Oracle的DESC命令,在Orcale中,我们可以使用:DESC 表名; 来查询表的结构,但SQL Server没有提供这个命令,只有一个sp_help 表名;的存储过程来查看表的所有信息。下面我们来通过SELECT语句查询表的结构。
我们新建了一张表后,会将所有与表有关的信息写入该数据库下面的某张系统表, sysobjects, syscolumns, systypes 是其中三张,我们要找的信息就在这三张表里面:
1、下面查询所有表的结构
注意,这里要加一个条件:SO.status >= 0,否则会将系统的临时表显示出来
 1 SELECT     
 2     SO.name 表名,
 3     SC.name 表列名,
 4     SC.colid 索引,
 5     ST.name 类型
 6 FROM       
 7     sysobjects   SO, -- 对象表
 8     syscolumns   SC, -- 列名表
 9     systypes     ST  -- 数据类型表 
10 WHERE        
11     SO.id = SC.id 
12   AND   SO.xtype = 'U'    -- 类型U表示表,V表示视图
13   AND   SO.status >= 0
14   AND   SC.xtype = ST.xusertype
15 ORDER BY  
16     SO.name, SC.colorder         -- 按表名、列名排序 
2、下面查询某张特定表的结构
 1 SELECT     
 2     SO.name 表名,
 3     SC.name 表列名,
 4     SC.colid 索引,
 5     ST.name 类型
 6 FROM       
 7     sysobjects   SO, -- 对象表
 8     syscolumns   SC, -- 列名表
 9     systypes     ST  -- 数据类型表 
10 WHERE        
11     SO.id = SC.id 
12    AND   SO.xtype = 'U'                   -- 类型U表示表,V表示视图
13    AND   SO.status >= 0                  -- status >= 0 为非系统对象
14    AND   SC.xtype = ST.xusertype
15    AND   SO.name = 'T_Employee'  -- 某张特定表
16 ORDER BY  
17     SO.name, SC.colorder         -- 按表名、列名排序 
3、如果要查看视图信息,只需要将SO.xtype = 'U'该为SO.xtype = 'V' 即可!

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号