2

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

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

4

7 回答 7

3

在 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')

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

于 2013-10-30T15:31:38.020 回答
1

sp_columns返回有关表中每个列的详细信息。所以回答

sp_columns @tablename

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

sp_help @tablename

于 2013-10-30T15:37:41.180 回答
1

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

Information_Schema - 列

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

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

于 2013-10-30T15:57:57.613 回答
1

要获取有关该列的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
于 2013-10-30T16:12:27.847 回答
1
exec sp_helptext <your view name>

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

于 2013-10-30T16:14:51.960 回答
0

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

于 2013-10-30T16:10:04.220 回答
0

简单的列名列表,没有任何进一步的信息。

SELECT COLUMN_NAME FROM TABLENAME.INFORMATION_SCHEMA.COLUMNS;

替换TABLENAME为您的表名称。

于 2020-11-02T10:16:43.617 回答