2016-03-01 317 views
1
  1. 内部连接时,是否始终如此相等条件的值是一个表中的主键和另一个表中的外键的相等。
  2. 当内部连接两个具有复合主键和复合外键的表时,是否我们总是必须通过主键和外键值的每个组件的等同性来连接这两个表。
+0

嘉琪1. No. 2否 – Strawberry

回答

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

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

+0

谢谢!你能帮我进一步解释内连接的定义吗? – jiaqi

+0

“只要列之间存在匹配,就从两个参与表中选择所有行”。 “列之间有匹配”的含义是什么?条件(谓词)应该基于共同的列? – jiaqi

+0

和'开'之间的区别和地方。为什么在外部连接中选择f.fid,fname,cid f faculty f left left outer join q where f.fid = q.fid; - 指向where子句的语法错误。 – jiaqi

0
  1. 可以内部连接通过两个表的任何字段,但...你所描述的标准内加入了基地和相关表格。这是性能问题加入索引字段
  2. 答案与第一个问题相同 - 您可以根据需要内联接。这取决于你的架构和你希望做的同时连接两个表
0

答案是没有到这两个问题是什么。

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

例如,你可以写这个。

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

甚至更​​可怕的东西。

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