如何获取表或视图中的列列表?

时间:2013-10-30 15:31:38

标签: sql sql-server sql-server-2008 sql-server-2008-r2

有时,我有兴趣在SQL Server 2008 R2数据库的其中一个表或视图中获取列的列表。例如,如果您在不使用昂贵的现成产品的情况下构建数据库文档,那么它很有用。

获取此信息的简便方法是什么?

7 个答案:

答案 0 :(得分:2)

在SQL Server 2008 R2(以及其他版本)中,每个数据库都会自动提供系统视图。只要您连接到表所在的数据库,就可以运行如下查询:

DECLARE @TableViewName NVARCHAR(128)
SET @TableViewName=N'MyTableName'

SELECT b.name AS ColumnName, c.name AS DataType, 
b.max_length AS Length, c.Precision, c.Scale, d.value AS Description
FROM sys.all_objects a
INNER JOIN sys.all_columns b
ON a.object_id=b.object_id
INNER JOIN sys.types c
ON b.user_type_id=c.user_type_id
LEFT JOIN sys.extended_properties d
ON a.object_id=d.major_id AND b.column_id=d.minor_id AND d.name='MS_Description'
WHERE a.Name=@TableViewName
AND a.type IN ('U','V')

当然,这只是一个起点。每个数据库中都有许多其他系统视图和列。您可以通过Views > "System Views

下的SQL Server Management Studio找到它们

答案 1 :(得分:1)

sp_columns返回有关表中每个列的详细信息。 SO Answer

sp_columns @tablename

sp_help返回有关整个表的详细信息,包括列和约束。 SO Answer

sp_help @tablename

答案 2 :(得分:1)

exec sp_helptext <your view name>

仅适用于视图,如果您需要表格中列的详细信息,blachniet的答案是最好的。

答案 3 :(得分:0)

另一种方法是查询INFORMATION_SCHEMA.columns视图,详见此处:

Information_Schema - COLUMNS

这将为您提供当前数据库中所有列(以及它们所属的表/视图)的信息,包括它们的数据类型,精度,排序规则以及它们是否允许空值等

同样有用的是,这些视图也在多个DBMS程序中维护,因此您可以使用相同或类似的查询来获取与SQL Server数据库相同的MySQL数据库信息,如果您有用,这可能很有用正在开发多种平台。

答案 4 :(得分:0)

在新的查询窗口中,键入视图/表的名称,突出显示它,然后按Alt-F1。这将运行sp_help,就像blachniet建议的那样。

答案 5 :(得分:0)

要获取关于该列的Columns of a view以及其他information的列表,您可以使用以下内容:

SELECT * FROM sys.columns c, sys.views v
   WHERE c.object_id = v.object_id
   AND v.name = 'view_Name'
GO

如果您只想要Column Name列表,请使用此功能。

SELECT c.name 
FROM sys.columns c, sys.views v
WHERE c.object_id = v.object_id
AND v.name = 'view_UserAssessphers'
GO

答案 6 :(得分:0)

简单的列名列表,无需任何其他信息。

SELECT COLUMN_NAME FROM TABLENAME.INFORMATION_SCHEMA.COLUMNS;

用表名替换TABLENAME