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