有时,我有兴趣在SQL Server 2008 R2数据库的其中一个表或视图中获取列的列表。例如,如果您在不使用昂贵的现成产品的情况下构建数据库文档,那么它很有用。
获取此信息的简便方法是什么?
答案 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
答案 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视图,详见此处:
这将为您提供当前数据库中所有列(以及它们所属的表/视图)的信息,包括它们的数据类型,精度,排序规则以及它们是否允许空值等
同样有用的是,这些视图也在多个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
。