資料庫基礎

表格R的欄位x有值為 1、1、2、3 的4筆資料列,表格S的欄位x有值為 1、1、2、4 的4筆資料列。SELECT * FROM R INNER JOIN S ON R.x = S.x 的結果有幾筆資料列?

  1. A2筆
  2. B3筆
  3. C5筆
查看答案與解析

正確答案:C. 5筆

在連結中,滿足條件的每一種資料列組合都會成為一筆結果。對 x = 1 而言,R的2筆與S的2筆的所有組合都滿足條件,共 2 × 2 = 4 筆;x = 2 則為 1 × 1 = 1 筆。R的3與S的4沒有對應的資料列,不會出現在內部連結的結果中。合計為 4 + 1 = 5 筆。2筆是認為每個相符的值(1與2)只產生一筆時的筆數。3筆是只檢查R的每筆資料列在S中是否有相符的值(如 SELECT * FROM R WHERE x IN (SELECT x FROM S) 這類查詢)時的筆數。若是不加條件的笛卡兒積,則為 4 × 4 = 16 筆。要注意連結欄位的值若有重複,結果的筆數會以相乘的方式增加。

  • A. 這是認為每個相符的值(1與2)只產生一筆時的筆數。相同值的資料列之間,所有組合都會成為結果。
  • B. 這是假設R的每筆資料列只連結一次時的筆數。重複的值會依組合數增加筆數。
  • C. 正確。x = 1 的組合有 2 × 2 = 4 筆,加上 x = 2 的1筆,合計5筆。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  1. 客戶表格(客戶編號, 姓名)中有(C1, 青木)、(C2, 井上)、(C3, 上田)、(C4, 江藤)共4筆資料列。訂單表格(訂單編號, 客戶編號, 金額)中有(O1, C1, 3000)、(O2, C2, 8000)、(O3, C1, 6000)、(O4, C3, 2000)、(O5, C2, 9000)共5筆資料列。SELECT 姓名 FROM 客戶 WHERE 客戶編號 IN (SELECT 客戶編號 FROM 訂單 WHERE 金額 > 5000) 的結果有幾筆資料列?
  2. 想從客戶表格(客戶編號, 姓名)與訂單表格(訂單編號, 客戶編號, 金額)中,求出從未下過訂單之客戶的姓名。正確的SQL敘述是下列何者?
  3. 關於關聯式資料庫的檢視表,下列敘述何者正確?
  4. 將關聯式資料庫的表格正規化,主要目的是下列何者?
  5. 訂單表格(訂單編號, 商品編號, 數量, 客戶編號, 客戶名稱)的主鍵為{訂單編號, 商品編號},函數相依為 {訂單編號, 商品編號} → 數量、訂單編號 → 客戶編號、客戶編號 → 客戶名稱。將此表格正規化到第三正規化(3NF)的結果,下列何者正確?