免費開始練習
普考申論題 105年 [資訊處理] 資料處理概要

第 一 題

📖 題組:
一關聯式資料庫之綱要(relational database schema)如下: 產品(編號,名稱,價格) 客戶(身分證號,姓名,地址,年齡) 購買(身分證號,編號,數量)
📝 此題為申論題,共 2 小題

小題 (一)

請用 SQL 指令來查出所有購買產品的客戶中,年齡小於 15 歲的客戶所購買的產品名稱、數量和這些客戶的姓名。(10 分)

思路引導 VIP

看到跨資料表查詢題目,首先應盤點所需欄位(名稱、數量、姓名)並確認其所屬的資料表。接著,找出資料表間的關聯鍵(身分證號、編號)進行內部合併(INNER JOIN),最後套用題目要求的選擇條件(年齡 < 15),即可建構出具備嚴謹邏輯的 SQL 語法。

🤖
AI 詳解
AI 專屬家教

【破題】本題測驗關聯式資料庫中跨資料表查詢(Join)的 SQL 語法撰寫能力,核心在於正確對應實體間的主外鍵關聯,並設定準確的選擇(Selection)與投影(Projection)條件。 【論述】 一、標準 SQL 語法(推薦使用 ANSI SQL-92 標準之 INNER JOIN):

小題 (二)

今欲查出所有沒有購買任何產品之客戶身分證號和姓名,某位資料庫管理員所寫下的 SQL 指令如下:
SELECT 身分證號,姓名
FROM 客戶,購買
WHERE 客戶.身分證號 ≠ 購買.身分證號;
請問他的寫法是否正確?若不正確,請說明錯處,並寫出正確的 SQL 查詢。(15 分)

思路引導 VIP

本題考查關聯式資料庫中典型的「差集(Set Difference)」運算觀念。看到「查詢沒有發生某事(如沒有購買)」的排除性條件時,考生應直覺聯想到 NOT INNOT EXISTS 或是 LEFT JOIN ... IS NULL 等語法,並須立刻察覺原題目指令中跨資料表直接使用「不等於(≠)」會引發笛卡兒乘積(Cartesian Product)的邏輯陷阱。

🤖
AI 詳解
AI 專屬家教

【破題】該資料庫管理員的 SQL 寫法是不正確的。此查詢語法不僅無法找出「未購買產品的客戶」,反而會產生包含錯誤資料的大量結果。 【論述】 一、錯誤原因分析: