資料庫基礎
員工表格(員工編號, 姓名, 部門編號)有4筆資料列,部門編號依序為10、20、10、NULL。部門表格(部門編號, 部門名稱)有部門編號為10、20、30的3筆資料列。SELECT 員工.姓名, 部門.部門名稱 FROM 員工 INNER JOIN 部門 ON 員工.部門編號 = 部門.部門編號 的結果有幾筆資料列?
- A3筆
- B4筆
- C12筆
查看答案與解析
正確答案:A. 3筆
INNER JOIN(內部連結)只把滿足ON條件的資料列組合作為結果。部門編號為10的2位員工與部門10的資料列組合,部門編號為20的1位員工與部門20的資料列組合,因此結果為3筆。部門編號為NULL的員工,因為與NULL的比較不會為真,不會與任何部門連結而從結果中消失。沒有員工的部門30也不會出現在結果中。4筆是保留員工表格所有資料列的左外部連結(員工 LEFT OUTER JOIN 部門)時的筆數。12筆是不加條件、產生所有組合的CROSS JOIN(笛卡兒積),即 4 × 3 = 12 筆。
- A. 正確。只有部門編號一致的3組成為結果。
- B. 這是保留所有員工之左外部連結的筆數。部門編號為NULL的員工在內部連結中會消失。
- C. 這是不加連結條件、產生所有組合之笛卡兒積的筆數(4 × 3)。