查询数据表列名和列类型

时间:2022-09-21 11:28:29

 

查询数据表列名和列类型(转)  

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' 即可!