1
  1. 内连接时,是否总是相等值的条件是一个表中的主键和另一个表中的外键相等。
  2. 当内部连接具有复合主键和复合外键的两个表时,我们是否总是必须通过主键和外键值的每个组件的相等来连接两个表。
4

3 回答 3

2
  1. 不,情况并非总是如此。但这是我们通常做的,它是规范的模式。(SQLINNER JOIN操作不要求谓词是相等比较。也没有必要对 PRIMARY KEY 和/或 FOREIGN KEY 列进行比较。)

  2. 同样,这是规范模式,但这不是INNER JOIN. 如果意图是在主键/外键关系上执行连接,那么是的,谓词将是键的所有组件列上的相等比较。

于 2016-03-01T23:25:47.587 回答
0
  1. 您可以通过任何字段对两个表进行内连接,但是......您描述了基本表和从属表的标准内连接。通过具有索引的字段加入是性能问题
  2. 答案与第一个问题相同 - 您可以根据需要进行内部连接。这取决于您的架构以及您在连接两个表时想要什么
于 2016-03-01T23:29:29.707 回答
0

你的两个问题的答案都是否定的。

操作的ON子句JOIN可以包含任何计算结果为 1 或 0 或无的表达式。

例如,你可以这样写。

  FROM t1
  JOIN t2 ON INSTR(t1.name, t2.surname) > 0 AND t2.nationality = 'US'

甚至更可怕的事情。

外键有助于强制执行约束。并且,在有利的情况下,关联索引会加速查询。但是 JOIN 子句完全不限于使用键和索引。

于 2016-03-01T23:30:25.527 回答