Join

相當於關係代數中 SQL 的“INNER JOIN USING”

  • February 13, 2019

我正在學習數據庫課程(斯坦福對 YT 數據庫的介紹),並且在某些時候,有人提到這t1 INNER JOIN t2 USING attr1, attr2相當於關係代數中由領結1表示的 NATURAL JOIN。

然而,該INNER JOIN … USING …表達式可以指出用於 JOIN 的列,而關係代數中的 bow tie 2運算符似乎無法表達這一點。

INNER JOIN … USING …關係代數中 SQL 的準確表示是什麼?有人可以給我一個例子來推動我朝著正確的方向前進嗎?


筆記

1, 2沒有下標的 bowtie 被認為是 NATURAL JOIN,而有條件作為下標的 bowtie 被認為是 THETA JOIN。在這裡,我指的是沒有下標的領結。

關係自然連接或多或少是 SQL 自然連接。SQL 自然連接定義為使用所有公共列的 SQL 內連接。(並且僅當每個參數都有一個具有每個名稱的列時才定義它。)如果您發現課程實際上所說的關於關係與 SQL 自然連接和使用使用的內部連接,那麼它就是這樣。如果課程說該表達式存在“等價性”,那將是因為這些表的公共列集將是特定範例中的那些列。

(要說關係代數自然連接“相當於”SQL 中的某些東西是模糊的,需要定義。有許多版本的關係代數在可用的運算符、具有給定名稱的運算符如何工作甚至在什麼關係上有所不同是。同時 SQL 表可以有 NULL,多列具有相同的名稱和多行具有相同的內容——所有這些通常都是非關係的。)

引用自:https://dba.stackexchange.com/questions/204369