2011-07-14 51 views
-1

當我從mySQL數據庫的多個表中檢索數據時,最好使用哪種方法,聯合,聯合或視圖?每種產品的優缺點是什麼?它們最適合什麼樣的環境?從多個表中拼接數據

+0

這裏沒有一個正確的答案。這取決於您擁有的數據以及您想要使用的數據。 –

+0

視圖可以使用JOIN和/或UNION,並且如果謂詞推送不能發生,可能會直接執行以及直接對錶執行操作。但我同意喬爾 - 這個問題太廣泛了,應該針對特定的數據庫。 –

回答

0

這真的取決於您希望如何顯示這些數據。

連接用於選擇相關數據並將其全部顯示在同一行,其中聯合用於將兩個不同選擇語句的數據組合在一起。

就你而言,當你有一個非常複雜的查詢時,應該使用一個視圖,並且你想簡化選擇數據所需的select語句。如果你一遍又一遍地使用select語句,它會減少混淆。有很多其他的理由來使用觀點,但我不認爲他們是相關的這個問題。

+0

謝謝,這是我以後的信息 –

0

@ jworrin說什麼。

SQL是關於設置操作的。

  • A inner join B是設置路口:甲∩乙

  • A union B是......好設置聯合:甲∪乙

  • A left join B是複合:(A ∉(A ∩ B))∪(A ∩ B)

  • right join與左連接相同。只需要語法糖來交換所涉及的表格/集合的位置。 B right join AA left join B相同。

  • A full join B也是一個複合:(A ∉(A ∩ B))∪(A ∩ B)∪(B ∉(A ∩ B))

使用哪種完全依賴於問題。

A view本質上是一個不變的罐裝選擇語句。它允許您呈現「虛擬表」,例如,歸一化數據庫的非歸一化平面視圖。視圖對於限制對列和/或表的訪問等也很有用。