【问题标题】:In a database how to find connections between tables在数据库中如何查找表之间的连接
【发布时间】:2015-11-18 20:02:51
【问题描述】:

我有一个数据库,它有很多表。我想从将它们相互链接的表中查找列名。以便加入他们。

我只是想知道表之间有哪些共同的列,这样我就知道如何继续并加入它们以获得所需的结果。

有没有办法知道如何找到相似的列名,还是我必须检查每个表?

这适用于 SQL Server 2008

【问题讨论】:

  • 你可以找到外键关系,仅此而已。阅读文档!
  • 您可以查看 sys.tables 和 sys.columns。但是不能保证会找到所有可以连接的列。您还可以查看 sys.foreign_keys 以找到明确的关系。
  • 除了明确的 FK 关系之外,没有办法猜测两列是否可以相关。只是有相同的名字并不意味着他们是相关的。
  • 希望外键已被创建。如果不;那么你需要一个外部维护的实体关系图。如果他们没有其中之一,那么您唯一可以查看的地方是先前的代码,以了解如何执行连接。如果已经定义了 PK/FK 关系,SQL Server 也会为 ERD 提供一些图表。

标签: sql sql-server database sql-server-2008


【解决方案1】:

sys.foreign_keys will contain information 关于明确关联为键的列。

除此之外,任何给定的列对之间的架构中都没有 结构 关系。如果单独表上的任何两列假定要连接,但在架构中没有实际上连接,这比其他任何事情都更像是架构的失败。 p>

没有机制可以揭示系统的创建者打算关联哪些列但实际上并没有关联。

【讨论】:

    【解决方案2】:

    如果 FK 方法不成功,我个人最喜欢查看列名。

    SELECT c.name AS column_
    , t.name AS table_
    
    FROM sys.columns c
    INNER JOIN sys.tables t
    ON c.object_id = t.object_id
    WHERE c.name LIKE '%userID%'
    ORDER BY t.name
    

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多