查询数据表列名和列类型(转)
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' 即可!