确定两个sql server表之间可以进行连接的位置

时间:2016-01-15 00:52:35

标签: sql-server

sql server非常新。我有一个db,大约有20个表,每个表有大约40列。如何选择两个表并查看它们是否有任何共同列?

我基本上想看看我可以在哪里加入..如果有更好的方法可以快速告诉我哪里可以合并来自两个表格的信息,这些信息也很有用。

2 个答案:

答案 0 :(得分:0)

尝试在SQL Management Studio中查看,在数据库图中,您可以找到表之间的关系。

答案 1 :(得分:0)

首先,在关系数据库中没有"可连接表和/或列"这样的概念。你总是可以列出两个关系(=表),它们在一个关系中的每一行与另一个行的每一行(它们的交叉/ carthesian产品)相交,然后根据一些谓词过滤那些(也称为" join&#34 ;,如果谓词涉及两个关系的列。)

" joinable"的想法表/列只有在考虑数据库模式时才会出现。模式的作者可以通过外键要求数据库引擎强制实施一些参照完整性。

现在,如果你的数据库模式做得好(也就是说,它的作者很好/足够聪明,可以在整个模式中放置参照完整性),你可以知道哪些表可以连接(通过哪些列)。

要查找这些外键,可以为每个表运行sp_help 'databasename.tablename'(如果它是当前数据库,则可以省略databasename.部分。)

此命令将输出有关给定表的一些事实,例如其列(以及它们的数据类型,要求,...),索引等。在接近结尾的某个地方,它将列出外键以及其主键在其他表上作为外键导入的位置(如果有的话)。

对于在其他表上作为外键导入的每个键,您都有一个候选谓词用于连接。

请注意,只有正确设置了外键,此步骤才有效。如果它们不是,您可以修复数据库模式(但要做到这一点,您必须知道哪些表可以连接)。此外,它不会在其他数据库(在相同或链接的服务器中)显示可连接表。

这也不适用于观点。

相关问题