阿摩線上測驗 登入

申論題資訊

試卷:114年 - 114 司法特種考試_三等_檢察事務官電子資訊組:程式語言#129571
科目:程式語言
年份:114年
排序:0

申論題內容

四、臺灣智慧金融公司設計一個關聯式資料庫(Relational database) ,內有兩個關聯(Relation) :工程師 Engineer[編號(整數、Primary key) 、姓名(字串) 、電話(字串) 、專長(字串)]、助理 Assistant[編號(整數、Primary key)、姓名(字串) 、薪水(整數)、工程師編號(Foreign key)]。 請寫出 SQL 指令,查詢出工程師編號小於等於 50 且其助理薪水大於 30000 的工程師姓名與專長,並造出工程師專長為「hack」相關之姓名與協助的助理姓名與電話的 View。另請說明何謂 View,以及使用 View 的 優點。(25 分)

詳解 (共 1 筆)

詳解 提供者:蕭仁豪

這題是典型的 SQL JOIN + 條件查詢 + 建立 VIEW + 理論問答題。

以下給出一份完整、可直接書寫於申論題卷的 25 分標準答案?


---

? 一、資料表結構(題意整理)

Engineer(工程師)

欄位 型態 鍵

編號 INT Primary Key
姓名 VARCHAR 
電話 VARCHAR 
專長 VARCHAR 


Assistant(助理)

欄位 型態 鍵

編號 INT Primary Key
姓名 VARCHAR 
薪水 INT 
工程師編號 INT Foreign Key (→ Engineer.編號)



---

? 二、查詢條件

1. 工程師編號 ≤ 50


2. 助理薪水 > 30000


3. 查出「工程師姓名、專長」


4. 之後還要建立 view,挑出「專長 = 'hack'」的工程師及其助理




---

? 三、查詢 SQL 指令

SELECT E.姓名 AS 工程師姓名,
       E.專長 AS 工程師專長
FROM Engineer E
JOIN Assistant A
  ON E.編號 = A.工程師編號
WHERE E.編號 <= 50
  AND A.薪水 > 30000;


---

? 四、建立 View(專長為 hack)

CREATE VIEW HackTeam AS
SELECT E.姓名 AS 工程師姓名,
       E.電話 AS 工程師電話,
       A.姓名 AS 助理姓名,
       A.薪水 AS 助理薪水
FROM Engineer E
JOIN Assistant A
  ON E.編號 = A.工程師編號
WHERE E.專長 = 'hack';


---

? 五、查詢 View

SELECT * FROM HackTeam;

即可列出所有「專長為 hack」之工程師及其助理姓名與薪水。


---

? 六、View(檢視表)的說明與優點

定義:

View 是一個虛擬資料表(Virtual Table),本身不儲存資料,只儲存查詢語法,
使用時可像一般資料表一樣進行查詢。


---

優點:

1. 安全性(Security):
使用者可僅存取 View 中指定欄位,避免直接操作原始表。


2. 簡化複雜查詢(Simplicity):
頻繁使用的 JOIN、條件查詢可定義成 View,重用時直接呼叫。


3. 一致性(Consistency):
View 統一查詢邏輯,減少重複編寫造成的錯誤。


4. 抽象化(Abstraction):
隱藏底層資料結構改動,應用程式仍可透過相同 View 存取資料。




---

✅ 總結答案概要:

問題 答案摘要

查詢條件 工程師編號 ≤ 50 且助理薪水 > 30000
查詢語法 SELECT E.姓名, E.專長 ... JOIN ...
建立 View CREATE VIEW HackTeam AS ... WHERE E.專長='hack'
View 定義 虛擬資料表
View 優點 安全、簡化查詢、維持一致、抽象化



---

是否要我幫你把這題轉成「SQL + 理論混合版答題稿」(例如可以直接照抄在試卷上、不用改格式的20行版本)?