民國100年 乙級專案 電腦軟體應用乙級 學科

第56題

針對結構化查詢語言( S Q L ) 陳述式「S E L E C T * F R O M A L E F T O U T E R J O I N B O N A…

題目

針對結構化查詢語言( S Q L ) 陳述式「S E L E C T * F R O M A L E F T O U T E R J O I N B O N A . p k = B . p k 」的查詢結果,下列敘述何者正確?

  1. (1) A 資料表( T a b l e ) 的每一筆資料在查詢結果中,最少會出現一次
  2. (2) 查詢結果的資料筆數等於A 資料表( T a b l e ) 的資料筆數與B 資料表的資料筆數兩者之和
  3. (3) 查詢結果的資料筆數等於A 資料表( T a b l e ) 的資料筆數與B 資料表的資料筆數兩者之積
  4. (4) 查詢結果的欄位數目與A 資料表( T a b l e ) 相同

官方答案

(1) A 資料表( T a b l e ) 的每一筆資料在查詢結果中,最少會出現一次

解析

SQL 的 LEFT OUTER JOIN(左外連結)會回傳左表 A 的所有資料列,即使右表 B 沒有相符的 pk 值,A 的該筆資料仍會出現,僅 B 的欄位以 NULL 填補,因此「A 資料表的每一筆資料在查詢結果中,最少會出現一次」正確,選 1。選項 2 說筆數等於兩表筆數之和(A+B)錯誤,結果筆數介於 A 筆數與 A×B 之間,最少為 A 筆數;選項 3 說等於兩表筆數之積(A×B,即笛卡兒積)亦錯誤;選項 4 說欄位數目與 A 相同錯誤,因 LEFT JOIN 結果會包含 A 與 B 兩表的全部欄位(A 欄位數+B 欄位數)。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料