免費開始練習
高考申論題 111年 [資訊處理] 程式設計

第 一 題

📖 題組:
資料庫是企業組織或政府部門中用以保存大量資料的機制。下圖為資料表的結構,請回答以下各小題。(每小題 10 分,共 20 分) [圖表描述:employee 包含 id(varchar 10), first_name, last_name。salary_slip 包含 id(varchar 10), year, month, amount。兩者由 id 關聯]
題組圖片
📝 此題為申論題,共 2 小題

小題 (一)

請以 SQL 列出某一個人的年度薪資總額,必須顯示 id, first_name, last_name 及總額。

思路引導 VIP

看到這題應立刻聯想到「多表關聯 (JOIN)」與「聚合函數 (SUM)」的組合應用。首先利用 id 欄位將 employeesalary_slip 兩表進行內部連接;接著根據「某個人」與「年度總額」的需求,透過 WHERE 條件篩選特定員工與年份,並務必使用 GROUP BY 搭配 SUM() 處理加總邏輯。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】運用 INNER JOIN 關聯多表,並透過聚合函數 SUM() 搭配 GROUP BY 計算年度總計。 【解答】 根據題目「列出某一個人的年度薪資總額」,標準的 SQL 寫法需指定特定員工與年份,以加總該年度所有月份的薪水:

小題 (二)

現在的資料查詢服務常見於網頁系統,而 SQL Injection 是最常見的資料庫攻擊方式。請問下列查詢語句是否會有被攻擊的疑慮?若有的話該如何改善?程式碼可以使用 PHP 或 ASP.NET。 SELECT first_name, last_name FROM employee WHERE id=’A001’

思路引導 VIP

考生應先判斷該 SQL 語句若為純靜態的常數字串則無風險,但實務上網頁系統的查詢條件通常來自外部輸入且容易被開發者以「字串串接」的方式處理,此時便存在 SQL Injection 漏洞。解題時必須明確指出這個前提,並提出使用「參數化查詢 (Parameterized Query)」或「預處理陳述式 (Prepared Statement)」作為標準防護機制,最後附上結構完整、具備防護意識的 PHP (PDO) 或 ASP.NET 程式碼範例以獲取高分。

🤖
AI 詳解
AI 專屬家教

【破題】該查詢語句若為程式中寫死的靜態字串,則無 SQL Injection 風險;但實務上,網頁系統中的條件值(如 'A001')通常來自使用者的動態輸入,若程式碼以「字串串接」的方式組成該語句,則具有極高的 SQL Injection 攻擊疑慮。 【論述】 一、風險分析

📝 同份考卷的其他題目

查看 111年[資訊處理] 程式設計 全題

升級 VIP 解鎖