答案 0 :(得分:2)
没有。并非总是如此。但这是我们通常所做的,它是规范模式。 (SQL INNER JOIN
操作不要求谓词是相等比较。并且不需要在PRIMARY KEY和/或FOREIGN KEY列上进行比较。)
同样,这是规范模式,但它不是INNER JOIN
的要求。如果目的是在主键/外键关系上执行连接,则是,谓词将是键的所有组件列上的相等比较。
答案 1 :(得分:0)
答案 2 :(得分:0)
你的两个问题的答案都是不。
ON
操作的JOIN
子句可以包含任何计算结果为1或0或无结果的表达式。
例如,你可以写这个。
FROM t1
JOIN t2 ON INSTR(t1.name, t2.surname) > 0 AND t2.nationality = 'US'
甚至更可怕的事情。
外键有助于强制执行约束。并且,在有利的情况下,相关索引会加速查询。但JOIN子句并不仅限于使用键和索引。