[原创]使用SELECT语句查询表、视图的名称、列名、类型

[原创]使用SELECT语句查询表、视图的名称、列名、类型
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          --  按表名、列名排序


查询结果:
snap0001.gif

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          --  按表名、列名排序

查询结果:

snap0002.gif

3、如果要查看视图信息,只需要将SO.xtype = 'U'该为SO.xtype = 'V' 即可!


你可能感兴趣的:([原创]使用SELECT语句查询表、视图的名称、列名、类型)