<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # DBMS 關系代數 > 原文: [https://beginnersbook.com/2019/02/dbms-relational-algebra/](https://beginnersbook.com/2019/02/dbms-relational-algebra/) 在本教程中,我們將討論**關系代數**。在前面的教程中,我們簡要討論了[關系代數和微積分](https://beginnersbook.com/2019/02/introduction-to-relational-algebra-calculus/)的基礎知識,其中我們了解了使用這些理論數學系統的必要性。 ## 什么是 DBMS 中的關系代數? 關系代數是一種**過程**查詢語言,適用于關系模型。查詢語言的目的是從數據庫中檢索數據或對數據執行各種操作,如插入,更新,刪除。當我說關系代數是一種過程查詢語言時,它意味著它告訴我們要檢索哪些數據以及如何檢索它們。 另一方面,關系演算是一種非過程式查詢語言,這意味著它會告訴要檢索哪些數據但不會告訴如何檢索它。我們將在單獨的教程中討論關系演算。 ## 關系代數中的運算類型 我們將這些操作分為兩類: 1. 基本操作 2. 派生操作 ### 基本/基本操作: 1. 選擇(`σ`) 2. 投影(`Π`) 3. 并集(`∪`) 4. 差集(`-`) 5. 笛卡爾積(`X`) 6. 重命名(`ρ`) ### 衍生操作: 1. 自然連接(`?`) 2. 左,右,全外連接(`?`,`?`,`?`) 3. 交集(`∩`) 4. 除法(`÷`) 讓我們在示例的幫助下逐一討論這些操作。 ## 選擇運算符(`σ`) 選擇運算符由 sigma(`σ`)表示,它用于查找滿足給定條件的關系(或表)中的元組(或行)。 如果您了解一點 SQL,那么您可以將其視為 SQL 中的[`where`子句](https://beginnersbook.com/2014/05/where-clause-in-sql/),它用于相同的目的。 **選擇運算符語法(`σ`)** ``` σ Condition/Predicate(Relation/Table name) ``` ### 選擇運算符(`σ`)示例 ``` Table: CUSTOMER --------------- Customer_Id Customer_Name Customer_City ----------- ------------- ------------- C10100 Steve Agra C10111 Raghu Agra C10115 Chaitanya Noida C10117 Ajeet Delhi C10118 Carl Delhi ``` **查詢:** ``` σ Customer_City="Agra" (CUSTOMER) ``` **輸出:** ``` Customer_Id Customer_Name Customer_City ----------- ------------- ------------- C10100 Steve Agra C10111 Raghu Agra ``` ## 投影運算符(`Π`) 投影運算符由`Π`符號表示,用于從表(或關系)中選擇所需的列(或屬性)。 關系代數中的投影運算符類似于 SQL 中的[`Select`語句](https://beginnersbook.com/2018/11/sql-select/)。 **投影運算符語法(`Π`)** ``` ∏ column_name1, column_name2, ...., column_nameN(table_name) ``` ### 投影運算符(`Π`)示例 在這個例子中,我們有一個包含三列的表`CUSTOMER`,我們只想獲取表的兩列,我們可以在投影運算符`Π`的幫助下完成。 ``` Table: CUSTOMER Customer_Id Customer_Name Customer_City ----------- ------------- ------------- C10100 Steve Agra C10111 Raghu Agra C10115 Chaitanya Noida C10117 Ajeet Delhi C10118 Carl Delhi ``` **查詢:** ``` ∏ Customer_Name, Customer_City (CUSTOMER) ``` **輸出:** ``` Customer_Name Customer_City ------------- ------------- Steve Agra Raghu Agra Chaitanya Noida Ajeet Delhi Carl Delhi ``` ## 并集運算符(`∪`) 并集運算符用`∪`符號表示,用于從兩個表(關系)中選擇所有行(元組)。 讓我們再討論一下并集運算符。假設我們有兩個關系`R1`和`R2`都有相同的列,我們想從這些關系中選擇所有元組(行),然后我們可以在這些關系上應用并集運算符。 **注意:**兩個表中存在的行(元組)只在并集中出現一次。簡而言之,您可以說并集操作后沒有重復項。 **并集運算符的語法(`∪`)** ``` table_name1 ∪ table_name2 ``` ### 并集運算符(`∪`)示例 表 1:`Course` ``` Course_Id Student_Name Student_Id --------- ------------ ---------- C101 Aditya S901 C104 Aditya S901 C106 Steve S911 C109 Paul S921 C115 Lucy S931 ``` 表 2:`Student` ``` Student_Id Student_Name Student_Age ------------ ---------- ----------- S901 Aditya 19 S911 Steve 18 S921 Paul 19 S931 Lucy 17 S941 Carl 16 S951 Rick 18 ``` **查詢:** ``` ∏ Student_Name (COURSE) ∪ ∏ Student_Name (STUDENT) ``` **輸出:** ``` Student_Name ------------ Aditya Carl Paul Lucy Rick Steve ``` **注意:**正如你所看到的那樣,輸出中沒有重復的名稱,即使我們在兩個表中都有很少的共同名稱,同樣在`COURSE`表中我們也有重復的名稱。 ## 交集運算符(`∩`) 交集運算符用`∩`符號表示,用于從兩個表(關系)中選擇公共行(元組)。 假設我們有兩個關系`R1`和`R2`都有相同的列,我們想要選擇兩個關系中存在的所有元組(行),那么在這種情況下我們可以對這兩個關系`R1∩R2`應用交集運算。 **注意:**只有那兩個表中存在的那些行才會出現在結果集中。 **交集運算符語法(`∩`)** ``` table_name1 ∩ table_name2 ``` ### 交集運算符(`∩`)示例 讓我們采取與上面相同的例子。 表 1:`Course` ``` Course_Id Student_Name Student_Id --------- ------------ ---------- C101 Aditya S901 C104 Aditya S901 C106 Steve S911 C109 Paul S921 C115 Lucy S931 ``` 表 2:`STUDENT` ``` Student_Id Student_Name Student_Age ------------ ---------- ----------- S901 Aditya 19 S911 Steve 18 S921 Paul 19 S931 Lucy 17 S941 Carl 16 S951 Rick 18 ``` **查詢:** ``` ∏ Student_Name (COURSE) ∩ ∏ Student_Name (STUDENT) ``` **輸出:** ``` Student_Name ------------ Aditya Steve Paul Lucy ``` ## 差集運算符(`-`) 差集運算符用`-`符號表示。假設我們有兩個關系`R1`和`R2`,我們想要選擇所有那些存在于關系`R1`中但不存在于關系`R2`中的元組(行),這可以使用集合差`R1-R2`來完成。 **差集運算符語法(`-`)** ``` table_name1 - table_name2 ``` ### 差集運算符(`-`)示例 讓我們看看上面我們看到的課程和學生。 **查詢:** 讓我們編寫一個查詢來選擇`STUDENT`表中但不存在于`COURSE`表中的學生姓名。 ``` ∏ Student_Name (STUDENT) - ∏ Student_Name (COURSE) ``` **輸出:** ``` Student_Name ------------ Carl Rick ``` ## 笛卡爾積(`X`) 笛卡爾積用`X`符號表示。假設我們有兩個關系`R1`和`R2`,然后這兩個關系的笛卡爾積(`R1 X R2`)將第一關系`R1`的每個元組與第二關系`R2`的每個元組組合。我知道這聽起來令人困惑,但是一旦我們舉一個這樣的例子,你就能理解這一點。 **笛卡爾積(`X`)**的語法 ``` R1 X R2 ``` ### 笛卡爾積(`X`)示例 表 1:`R` ``` Col_A Col_B ----- ------ AA 100 BB 200 CC 300 ``` 表 2:`S` ``` Col_X Col_Y ----- ----- XX 99 YY 11 ZZ 101 ``` **查詢:** 讓我們查找表`R`和`S`的笛卡爾積。 ``` R X S ``` **輸出:** ``` Col_A Col_B Col_X Col_Y ----- ------ ------ ------ AA 100 XX 99 AA 100 YY 11 AA 100 ZZ 101 BB 200 XX 99 BB 200 YY 11 BB 200 ZZ 101 CC 300 XX 99 CC 300 YY 11 CC 300 ZZ 101 ``` **注意:**輸出中的行數始終是每個表中行數的乘積。在我們的示例中,表 1 有 3 行,表 2 有 3 行,因此輸出有`3×3 = 9`行。 ## 重命名(`ρ`) 重命名(`ρ`)操作可用于重命名關系的屬性。 **重命名(`ρ`)語法:** ``` ρ(new_relation_name, old_relation_name) ``` ### 重命名(`ρ`)示例 假設我們有一個表`Customer`,我們正在獲取客戶名稱,我們將所得關系重命名為`CUST_NAMES`。 表:客戶 ``` Customer_Id Customer_Name Customer_City ----------- ------------- ------------- C10100 Steve Agra C10111 Raghu Agra C10115 Chaitanya Noida C10117 Ajeet Delhi C10118 Carl Delhi ``` **查詢:** ``` ρ(CUST_NAMES, ∏(Customer_Name)(CUSTOMER)) ``` **輸出:** ``` CUST_NAMES ---------- Steve Raghu Chaitanya Ajeet Carl ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看