sql - SQL Server 查询以获取表中的列列表以及数据类型、长度、唯一性、非空值、主键、外键及其引用
问题描述
我需要一个查询来获取表中的列列表以及数据类型、长度、非空、唯一、主键、外键及其引用。
我将以下答案与 MySQL 一起使用,但我在 SQL Server 中需要它。
解决方案
我相信你需要这样的东西。如果您只想查看带有外键的表,您需要更改LEFT JOIN
为INNER JOIN
.
SELECT t.object_id
, t.name TableName
, C.name ColumnName
, C.column_id ColumnSeq
, S.name DataType
, tf.name ParentTableName
, CF.name ParentColumnName
FROM sys.tables T
INNER JOIN sys.columns C ON T.object_id = C.object_id
INNER JOIN sys.types S ON C.system_type_id = S.system_type_id
LEFT JOIN sys.foreign_key_columns FSK ON FSK.parent_object_id = t.object_id AND FSK.parent_column_id = C.column_id
LEFT JOIN SYS.columns CF ON FSK.referenced_object_id = CF.object_id AND FSK.referenced_column_id = CF.column_id
LEFT JOIN SYS.tables TF ON cf.object_id = TF.object_id
推荐阅读
- ios - UIContextMenu 和 UITableView 问题
- angular - 数据表行在更改角度排序顺序时被隐藏
- django - Gitlab runner 删除服务器上的一些文件/文件夹
- java - 在 Spring、Spock 和 Groovy 的测试中注入 @Value 失败
- python - 如何为 Postgresql 自动授权客户端?
- python - 您如何计算时间序列数据中的累积中位数?
- javascript - 如果列表包含任何元素,如何签入javascript?
- postgresql - 客户数据访问
- java - 为什么在 Windows 10 上为一个 Java 程序运行 2 个 Java 平台二进制文件?
- hyperledger-fabric - Hyperledger Fabric 事务需要更长的时间来提交