我有一个SQL Server数据库,我想知道它有什么列和类型。我更喜欢通过查询而不是使用像Enterprise Manager这样的GUI来实现这一点。有办法做到这一点吗?


当前回答

以防您不想使用stored proc,这里有一个简单的查询版本

select * 
  from information_schema.columns 
 where table_name = 'aspnet_Membership'
 order by ordinal_position

其他回答

使用此查询

Select * From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME = 'TABLENAME'

如果你正在使用Brent Ozar团队的FirstResponderKit,你也可以运行这个查询:

exec sp_blitzindex @tablename='MyTable'

它将返回关于表的所有信息:

索引及其使用统计信息(读、写、锁等)、空间 二手和其他 缺失索引 列 外键 统计内容

当然,它不是一个系统,也不像sp_help或sp_columns那样通用,但它返回关于表的所有可能信息,我认为值得在您的环境中创建它并在这里提到它。

只需双击表名并按Alt+F1

CREATE PROCEDURE [dbo].[describe] 
( 
@SearchStr nvarchar(max) 
) 
AS 
BEGIN 
SELECT  
    CONCAT([COLUMN_NAME],' ',[DATA_TYPE],' ',[CHARACTER_MAXIMUM_LENGTH],' ', 
    (SELECT CASE [IS_NULLABLE] WHEN 'NO' THEN 'NOT NULL' ELSE 'NULL' END),
    (SELECT CASE WHEN [COLUMN_DEFAULT] IS NULL THEN '' ELSE CONCAT(' DEFAULT ',[COLUMN_DEFAULT]) END)
    ) AS DESCRIPTION
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE @SearchStr
END 

您可以使用以下方法:sp_help表名

[示例]sp_help客户

或使用快捷键

选择所需的表并按ALT+F1。

示例:客户按“ALT+F1”。