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

25 浏览
0 Comments

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

有时候,我有兴趣获取我SQL Server 2008 R2数据库中某个表或视图的列清单。这很有用,例如,如果你想构建数据库文档而不使用昂贵的现成产品。有什么简单的方法可以获取这些信息呢?

0
0 Comments

在使用SQL查询时,有时候需要获取表或视图中的列信息。然而,常规的查询语句并没有提供直接获取列信息的方法。这就导致了“如何获取表或视图中的列列表”的问题。

为了解决这个问题,可以使用一些特定的存储过程来获取列信息。其中,两个常用的存储过程是“sp_columns”和“sp_help”。

“sp_columns”存储过程可以返回表或视图中每个列的详细信息。通过调用该存储过程并传入表或视图的名称作为参数,就可以获取到相关的列信息。

sp_columns 表名;

另一个常用的存储过程是“sp_help”。调用这个存储过程并传入表或视图的名称作为参数,可以获取到关于整个表的详细信息,包括列和约束等。

sp_help 表名;

这两个存储过程可以帮助我们获取表或视图中的列信息。然而,据我所知,它们并不能提供列描述的访问权限。因此,如果需要获取列的描述信息,可能需要使用其他方法。

0
0 Comments

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

DECLARE @TableName NVARCHAR(128)
SET @TableName = 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=@TableName
AND a.type IN ('U','V')

当然,这只是一个起点。每个数据库中还有许多其他的系统视图和列可以使用。可以在SQL Server Management Studio中找到它们,路径为Views > "System Views

0
0 Comments

获取表或视图中列的列表的方法有多种。其中一种方法是查询INFORMATION_SCHEMA.columns视图,该视图会提供当前数据库中所有列的信息(以及它们所属的表/视图),包括数据类型、精度、排序规则以及是否允许为空等。此外,这些视图在多个DBMS程序中也有维护,因此可以使用相同或类似的查询来获取关于MySQL数据库和SQL Server数据库的相同信息,这对于在多个平台上开发可能非常有用。

与blachniet的答案一样,这也是一个很好的解决方案,但据我所见,它仍然无法提供对列描述的访问。

如果您的问题中没有提到扩展属性,那么结合sys.columns和sys.extended_properties应该可以解决问题。不过,还是值得记住信息模式视图,因为它们提供了很多信息,并且正如我之前提到的,也存在于其他DBMS(如MySQL)中。

解决方法之一是查询INFORMATION_SCHEMA.columns视图,该视图会提供当前数据库中所有列的信息,包括它们所属的表/视图、数据类型、精度、排序规则以及是否允许为空等。此外,这些视图在多个DBMS程序中也有维护,因此可以使用相同或类似的查询来获取关于MySQL数据库和SQL Server数据库的相同信息,这对于在多个平台上开发可能非常有用。

另一种解决方法是结合sys.columns和sys.extended_properties来获取列描述。通过将这两个系统视图进行连接,可以获取到列的详细描述信息。

要获取表或视图中列的列表,可以使用INFORMATION_SCHEMA.columns视图或结合sys.columns和sys.extended_properties系统视图来实现。这些方法提供了关于列的各种信息,对于开发人员在多个平台上进行开发非常有帮助。

0