2016-03-01 104 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子句並不僅限於使用鍵和索引。