資料庫原理及其應用(SQL server2012)習題詳解-習題7

初心cc發表於2018-10-24

答案連結(點選檢視
http://note.youdao.com/noteshare?id=5bd9212ed6ec1167823e0b1136f42de6

習題7

習題6
連結:https://blog.csdn.net/qq_40402685/article/details/84952261
習題8
連結:https://blog.csdn.net/qq_40402685/article/details/84404069
注:因匯入圖片需時間較多,特分享此連結。
7-1.名詞解釋:

檢視:是從基本表或其他檢視中匯出的表,它本身不獨立儲存在資料庫中,也就是資料庫中只存放檢視的定義而不存放檢視的資料。
索引:是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。
聚集索引:該索引中鍵值的邏輯順序決定了表中相應行的物理順序。這種索引對查詢非常有效,在每一張基本表中只能有一個聚集索引。
唯一索引:不允許具有索引值相同的行,從而禁止重複的索引或鍵值。並在每次使用 INSERT 或 UPDATE 語句新增資料時進行檢查

7-2.簡述資料庫檢視和基本表的聯絡與區別。

相同:①都是由行列組成的。
②對錶的操作適用於檢視
區別:①檢視是已經編譯好的sql語句,而表不是。
②檢視沒有實際的物理記錄。而表有。
③表是內容,檢視是視窗。
④表只用物理空間而檢視不佔用物理空間,檢視只是邏輯概念的存在,表可以及時四對它進行修改,但檢視只能有建立的語句來修改。
⑤表是內模式,試圖是外模式
⑥檢視是檢視資料表的一種方法,可以查詢資料表中某些欄位構成的資料,只是一些SQL語句的集合。從安全的角,檢視可以不給使用者接觸資料表,從而不知道表結構。
⑦表屬於全域性模式中的表,是實表;檢視屬於區域性模式的表,是虛表。
⑧檢視的建立和刪除隻影響檢視本身,不影響對應的基本表。

7-3.可更新檢視必須滿足哪些條件?

解:最重要的一個條件就是一個可更新檢視只能包含一個表。其他的限制包括不允許使用GROUP BY子句和ORDER BY子句、不支援DISTINCT關鍵字、不能使用聚合函式或子查詢以及不能包含計算列等。諸如此類的限制還有很多。

7-4.假設某“倉庫管理”關係型資料庫有下列五個關係模式:

零件PART(PNO,PNAME,COLOR,WEIGHT)
專案PROJECT(JNO,JNAME,JDATE)
供應商SUPPLIER(SNO,SNAME,SADDR)
供應P_P(JNO,PNO,TOTAL)
採購P_S(PNO,SNO,QUANTITY)
(1) 試將PROJECT、P_P、PART三個基本表的自然聯接定義為一個檢視VIEW1, PART、P_S、SUPPLIER三個基本表的自然聯接定義為一個檢視VIEW2。
(2) 試在上述兩個檢視的基礎上進行資料查詢:
① 檢索上海的供應商所供應的零件的編號和名字。
② 檢索專案J4所用零件的供應商編號和名字。

**

答案詳情見文章頂部

**

7-5. 對於教務管理資料庫中基本表SC,建立檢視如下:

CREATE VIEW S_GRADE(SNO,C_NUM,AVG_GRADE)
AS SELECT SNO,COUNT(CNO),AVG(GRADE)
FROM SC
GROUP BY SNO
試判斷下列查詢和更新是否允許執行。若允許,寫出轉換到基本表SC上
相應操作:
(1) SELECT * FROM S_GRADE
(2) SELECT SNO,C_NUM
FROM S_GRADE
WHERE AVG_GRADE>80;
(3) SELECT SNO,AVG_GRADE
FROM S_GRADE
WHERE C_NUM>(SELECT C_NUM
FROM S_GRADE
SNO=’200912121’);
(4) UPDATE S_GRADE
SET C_NUM=C_NUM+1
WHERE SNO=’ 200915122’
(5) DELETE FROM S_GRADE
WHERE C_NUM>4;
⑷ 不允許。C_NUM是對SC中的學生選修課程的門數進行統計,在未更改SC表時,要在檢視S_GRADE中更改門數,是不可能的。
⑸ 不允許。在檢視S_GRADE中刪除選修課程的門數在4門以上的學生元組,勢必造成SC中這些學生學習元組的刪除,這不一定是使用者的原意,因此使用分組和聚合操作的檢視,不允許使用者執行更新操作。
**

答案詳情見文章頂部

**

7-6.簡述建立索引的必要性和作用。

答:資料庫的索引就類似於書籍的目錄,如果想快速查詢而不是逐頁查詢指定的內容,可以通過目錄中章節的頁號找到其對應的內容。類似地,索引通過記錄表中的關鍵值指向表中的記錄,這樣資料庫引擎就不用掃描整個表而定位到相關的記錄。相反,如果沒有索引,則會導致SQL Server搜尋表中的所有記錄,以獲取匹配結果,這樣就會大大降低查詢的效率。

7-7.聚集索引和非聚集索引有何種異同?

答:聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致。聚集索引即需要對已有表資料重新進行排序(若表中已有資料),即刪除原始的表資料後再將排序結果按物理順序插回,故聚集索引建立完畢後,建立聚集索引的列中的資料已經全部按序排列。一個表中只能包含一個聚集索引,但該索引可以包含多個列。非聚集索引類似書本索引,索引與資料存放在不同的物理區域,建立非聚集索引時資料本身不進行排序。一個表中可以含多個非聚集索引。
相同之處就是它們都是索引,都可以提高資料的查詢速度。

7-8.用T-SQL語句,按資料庫JXGL中選修課程表SC的成績列降序建立一個普通索引(非唯一、非聚集)。

**

答案詳情見文章頂部

**

相關文章