首页 > 数据库 >sql server 查看所有表外键的语句

sql server 查看所有表外键的语句

时间:2024-09-08 12:23:03浏览次数:22  
标签:name 表外键 column object 外键 server sys sql id

在 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_idobject_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

相关文章

  • Mysql高级篇(中)——七种常见的 join 查询图
    注意:MySQL是不支持FULLOUTERJOIN这种语法的,因此要实现图中6、7的查询结果,可以使用UNION关键字结合LEFTJOIN、RIGHTJOIN实现,UNION可以实现去重的效果;参考如下代码:--MySQL中图标6的实现方式SELECT*FROMtableAALEFTJOINtableBBONA.key=B.ke......
  • Mysql高级篇(中)——索引介绍
    Mysql高级篇(中)——索引介绍一、索引本质二、索引优缺点三、索引分类(1)按数据结构分类(2)按功能分类(3)按存储引擎分类(4)按存储方式分类(5)按使用方式分类四、索引基本语法(1)创建索引(2)查看索引(3)删除索引(4)ALTER关键字创建/删除索引五、适合创建索引的情况思考题六、不适合创......
  • PostgreSQL入门介绍
    一、PostgreSQL背景及主要功能介绍1、背景PG数据库,全称为PostgreSQL数据库,是一款开源的关系型数据库管理系统(RDBMS)。其起源可以追溯到20世纪80年代末和90年代初,由加拿大的计算机科学家MichaelStonebraker及其团队在加州大学伯克利分校启动。该项目旨在创建一个强大的、......
  • 从零搭建一个网站-云服务器Linux版——2:安装服务器MySQL+报错
    使用需要的东西:     软件:Xshell。    硬件:一台云服务器,一个域名。        系统环境:Windows11专业版 23H2。        Linux版本:CentOS9前景提要:在上一章已进行了服务器购买,系统搭设,Xshell访问服务器,域名购买,域名解析,Nginx软件搭建运行,......
  • 配置PHP的Session存储到Mysql / Redis / memcache 以及使用opcache以及apc缓存清除工
    一、配置PHP的Session存储到Mysql,Redis以及memcache等        PHP的会话默认是以文件的形式存在的,可以通过简单的配置到将Session存储到NoSQL中,即提高了访问速度,又能很好地实现会话共享!1.默认配置:session.save_handler=filessession.save_path=/tmp/2.配......
  • 六、MySQL高级—架构介绍(1)
    ......
  • 十、MySQL高级—查询截取分析(3)
    ......
  • MySQL数据一致性
    在MySQL数据库中,事务隔离级别读已提交、可重复读,在事务、并发控制方法、数据库锁有什么区别与联系?在MySQL数据库中,事务隔离级别读已提交(ReadCommitted)和可重复读(RepeatableRead)是两种不同的事务隔离级别,它们在事务处理、并发控制方法和数据库锁方面有各自的特点和联系......
  • linux虚拟机(centos)搭建sqli-labs
    1.开启小皮2.查看文件位置配置文件路径为/usr/local/phpstudy/soft[root@localhostsoft]#cd/www/admin/localhost_80[root@localhostsoft]#pwd/usr/local/phpstudy/soft网站根目录为/www/admin/localhost_80/wwwroot[root@localhostlocalhost_80]#cdwwwroot[roo......
  • Web安全之SQL注入:如何预防及解决
    SQL注入(SQLInjection)是最常见的Web应用漏洞之一,它允许攻击者通过注入恶意SQL代码来操作数据库,获取、修改或删除数据。作为Java开发者,理解并防止SQL注入攻击是至关重要的。在本篇文章中,我们将详细介绍SQL注入的原理,演示如何在电商交易系统中出现SQL注入漏洞,并提供正确的防范......