(4)由于在職工表的定義中,職工號主碼是唯一標識每個元組(記錄)的,而在表11第①行中的職工號是“1001”,在題目給出的表8“職工”關(guān)系示例表中已經(jīng)存在該職主號的記錄,為了保證實體的完整性,該條記錄不能插入。
(5)表11第②行的元組可以插入到表8“職工”關(guān)系表中,盡管部門號、電話和辦公室為空,但是它表示該雇員暫時沒有分配到某個部門。雖然職工表中部門號是外鍵,但在定義中也沒有約束它不能為空。
(6)表11第③行的元組不能插入到表8“職工”關(guān)系表中,部門號是外鍵,而在部門關(guān)系中找不到部門號為“6”的元組,違反了參照完整性,所以不能做插入操作。
【問題3】(5分)
查詢每個部門中月工資最高的“職工號”的SQL查詢語句如下。
Select 職工號 from 職工E
where 月工資=(Select Max(月工資)
from職工as M
where M.部門號=E.部門號)
(1)請用30字以內(nèi)文字簡要說明該查詢語句對查詢效率的影響。
(2)對該查詢語句進行修改,使它既可以完成相同功能,又可以提高查詢效率。
【問題3】答案解析:
這是一道要求考生分析查詢效率的綜合分析題。通常在涉及相關(guān)查詢的某些情形中,構(gòu)造臨時關(guān)系可以提高查詢效率。
(1)試題中所給出的SQL查詢語句,對于外層的職工關(guān)系E中的每一個元組,都要對內(nèi)層的整個職工關(guān)系M進行檢索,因此查詢效率不高。
(2)對該查詢語句進行修改,使它既可以完成相同功能,又可以提高查詢效率。
解答思路①
改正后的SQL語句使用了臨時表。
Select Max(月工資) as 最高工資,部門號 into Temp from職工
Group by部門號
Select 職工號 from職工,Temp
where月工資=最高工資 and 職工。部門號=Temp.部門號
解答思路②
Select 職工號 from 職工,(Select Max(月工資) as 最高工資,部門號 Group by 部門號)
as depMax
where 月工資=最高工資 and 職工。部門號=depMax.部門號
相關(guān)推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |