内连接两个表

时间:2016-03-01 23:21:06

标签: mysql sql inner-join dm

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

3 个答案:

答案 0 :(得分:2)

  1. 没有。并非总是如此。但这是我们通常所做的,它是规范模式。 (SQL INNER JOIN操作不要求谓词是相等比较。并且不需要在PRIMARY KEY和/或FOREIGN KEY列上进行比较。)

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

答案 1 :(得分:0)

  1. 您可以通过任何字段由两个表进行内连接,但是......您描述了基表和从属表的标准内连接。并且通过带索引的字段加入它的性能问题
  2. 答案与第一个问题相同 - 您可以根据需要进行内部联接。这取决于您的架构以及您在连接两个表时所希望的内容

答案 2 :(得分:0)

你的两个问题的答案都是

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

例如,你可以写这个。

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

甚至更可怕的事情。

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