地特四等申論題
105年
[資訊處理] 資料處理概要
第 一 題
📖 題組:
一關聯式資料庫之綱要(relational database schema)如下: 產品(編號,名稱,價格) 客戶(身分證號,姓名,地址,年齡) 購買(身分證號,編號,數量)
一關聯式資料庫之綱要(relational database schema)如下: 產品(編號,名稱,價格) 客戶(身分證號,姓名,地址,年齡) 購買(身分證號,編號,數量)
📝 此題為申論題,共 2 小題
小題 (一)
請用 SQL 指令來查出所有購買產品的客戶中,年齡小於 15 歲的客戶所購買的產品名稱、數量和這些客戶的姓名。(10 分)
思路引導 VIP
面對 SQL 查詢題,首先確定「SELECT」需要輸出的欄位(產品名稱、數量、客戶姓名),接著找出這些欄位所在的資料表。透過主鍵與外鍵(身分證號、編號)將三個資料表進行「JOIN」,最後在「WHERE」子句加上題目要求的篩選條件(年齡 < 15)。
小題 (二)
今欲查出所有沒有購買任何產品之客戶身分證號和姓名,某位資料庫管理員所寫下的 SQL 指令如下:
SELECT 身分證號,姓名
FROM 客戶,購買
WHERE 客戶.身分證號 ≠ 購買.身分證號;
請問他的寫法是否正確?若不正確,請說明錯處,並寫出正確的 SQL 查詢。(15 分)
思路引導 VIP
考生應先辨識 FROM A, B 產生笛卡兒積的特性,理解單純使用 != 無法達到差集(Difference)的過濾效果。要找出「沒有...」的關聯資料,通常需要使用 NOT IN、NOT EXISTS 子查詢,或透過 LEFT JOIN 搭配 IS NULL 條件來解題。