有时,我有兴趣在我的 SQL Server 2008 R2 数据库中的一个表或视图中获取列列表。例如,如果您在不使用昂贵的现成产品的情况下构建数据库文档,它就很有用。
获取此信息的简单方法是什么?
有时,我有兴趣在我的 SQL Server 2008 R2 数据库中的一个表或视图中获取列列表。例如,如果您在不使用昂贵的现成产品的情况下构建数据库文档,它就很有用。
获取此信息的简单方法是什么?
在 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
sp_columns返回有关表中每个列的详细信息。所以回答
sp_columns @tablename
sp_help返回有关整个表的详细信息,包括列和约束。所以回答
sp_help @tablename
另一种方法是查询 INFORMATION_SCHEMA.columns 视图,详见此处:
这将为您提供当前数据库中所有列的信息(以及它们所属的表/视图),包括它们的数据类型、精度、排序规则以及它们是否允许空值等
同样有用的是,这些视图也在多个 DBMS 程序中维护,因此您可能会使用相同或相似的查询来获取有关 MySQL 数据库的相同信息,因为您可以获得 SQL Server DB,如果您正在开发,这可能很有用多个平台。
要获取有关该列的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
exec sp_helptext <your view name>
也仅适用于视图,如果您需要表中列的详细信息,blachniet 的答案是最好的。
在新的查询窗口中,键入视图/表的名称,突出显示它,然后按 Alt-F1。这将运行 sp_help,就像 blachniet 建议的那样。
SELECT COLUMN_NAME FROM TABLENAME.INFORMATION_SCHEMA.COLUMNS;
替换TABLENAME
为您的表名称。