資料庫工程師考試自學(3)—關係運算之串連

來源:互聯網
上載者:User

join,中文在《資料庫系統工程師教程》中翻譯為串連,在《SQL server 編程必知必會》中翻譯為連接。為避免不一致,本文不進行翻譯,直接引用英文原詞JOIN.

 

關係模式,元組,屬性等術語出現於關係代數裡,而表,行,列等術語出現於SQL語言。本文統一使用更直接的SQL語言中的術語。

 

Join是關係運算中相當重要的運算子。其本質是把多個表中的行進行串連。而如何串連各個表中的行就成為不同join的分類依據。

 

參與join的表中,一般都包含能比較的列屬性。如何對這些屬性列進行比較就是不同join的標準。

 

設參與Join的兩個表為R(A,B,C),S(D,E,A)。

(1)根本不進行任何比較

        這就是笛卡爾乘積,即對於每個表中的每一行,其他表中的任意行都與其進行串連。

        在關係代數中記做:RXS

        在SQL中,為select * from R, S

 

(2) θ Join

       對於R中的每一行的參與比較的列與S表中的每一行對應的列進行比較,看是否滿足 θ。θ可以為大於,小於,等其他任何邏輯運算子。

       例如要比較的是R.A和S.A,標準是R.A > S.A。

       關係代數中記為:R(呵呵還不會輸入)S

       SQL中:select * from R inner join S on R.A > S.A

       運算原理為:對於R中的每一行,遍曆S中的全部行,並進行R.A > S.A比較,如果滿足,則把S中的行與R中的當前行串連為一個新

       行,並插入結果表中。如果不滿足,則丟棄。 

 

(3)等值Join

       當θ Join中的θ為相等測試時,則變成了等值Join.其實關係運算中絕大部分的Join為等值Join。

       在SQL中:select * from R inner join S on R.A = S.A

 

(4)自然Join

        等值Join後得到的表中會出現重複的列, 如R.A和S.A同時出現,而這兩個列是完全相同的,所以沒必要重複。如果將重複的列

        去掉,那麼等值Join就變成了自然Join。

        在SQL中:select R.A, R.B, R.C, S.D, S.E from R inner join S on R.A=S.A

 

(5)外串連outer join

        (2)-(4)均成為inner join。inner join存在的問題就是丟棄所有不滿足條件的行。比如對於R中的第i行,如果S中的所有行都不能與其進行串連,那麼R的i行將不會出現在結果表中。又如,對於S的第i行,如果此行對於R中的任意行都不滿足比較條件,則也不會出現在結果表中。

         為了防止丟失R中的i行,此時將強行把第i行加入結果表中,並且在本來應該填入S列的地方全部填入NULL。此時這種串連成為

left outer join。即把本來要丟棄的左邊的表中的行加入結果表中。

         同樣道理,把本來要丟棄的右邊表中的行加入結果表中則成為right outer join.

         在SQL中記為:select R.A, R.B, R.C, S.D, S.E from R left outer join S on R.A=S.A

                              select R.A, R.B, R.C, S.D, S.E from R right outer join S on R.A=S.A

         如果為了防止丟失R和S中的行,則使用 full outer join.也就是把left outer join 和 right outer join結合。

         在SOL中好像沒有對應全外串連的關鍵詞。

       

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.