在 SQL Server 中,可以通过查询系统视图来查看数据库中所有表的外键信息。以下是一个完整的 T-SQL 语句示例,用于列出所有表的外键、外键列以及相关的父表和引用表信息。
查询所有表的外键信息
SELECT
fk.name AS ForeignKeyName,
tp.name AS ParentTableName,
cp.name AS ParentColumnName,
tr.name AS ReferencedTableName,
cr.name AS ReferencedColumnName
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.foreign_key_columns AS fkc ON fk.object_id = fkc.constraint_object_id
INNER JOIN
sys.tables AS tp ON fk.parent_object_id = tp.object_id
INNER JOIN
sys.columns AS cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN
sys.tables AS tr ON fk.referenced_object_id = tr.object_id
INNER JOIN
sys.columns AS cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
ORDER BY
ParentTableName, ForeignKeyName;
详细解释
- sys.foreign_keys: 此系统视图包含数据库中所有外键的信息。
name
是外键的名称,parent_object_id
是父表的对象 ID,referenced_object_id
是引用表的对象 ID。 - sys.foreign_key_columns: 此视图包含外键约束中涉及的列的映射。
constraint_object_id
是外键的对象 ID,parent_column_id
是父表列的 ID,referenced_column_id
是引用表列的 ID。 - sys.tables: 此视图包含数据库中所有表的信息。通过
object_id
可以与外键信息关联,以获取表名。 - sys.columns: 此视图包含表中所有列的信息。通过
column_id
和object_id
可以与外键列信息关联,获取具体的列名。
结果示例
执行上述查询后,您将得到类似以下的结果:
ForeignKeyName | ParentTableName | ParentColumnName | ReferencedTableName | ReferencedColumnName |
FK_Order_Customer | Orders | CustomerID | Customers | ID |
FK_OrderDetails_Order | OrderDetails | OrderID | Orders | ID |
FK_Product_Category | Products | CategoryID | Categories | ID |
小结
通过以上查询,您可以轻松查看 SQL Server 数据库中所有表的外键信息。这对于了解数据库结构、维护数据完整性以及调试外键约束问题非常有用。
标签:name,表外键,column,object,外键,server,sys,sql,id From: https://blog.51cto.com/u_14540126/11951791