面試中常問到的資料庫的一些問題
1 簡述檢視的意義
參考答案
檢視的意義在於兩個方面:
1)簡化複雜查詢。如果需要經常執行某項複雜查詢,可以基於這個複雜查詢建立檢視,此後查詢此檢視即可。
2)限制資料訪問。檢視本質上就是一條SELECT語句,所以當訪問檢視時,只能訪問到所對應的SELECT語句中涉及到的列,對基表中的其它列起到安全和保密的作用。
2 下列關於檢視說法正確的是
A.對複雜檢視可以執行插入資料操作
B.為了禁止在檢視上執行DML操作,可以在建立檢視時設定READ ONLY約束
C.CHECK OPTION約束表示,通過檢視所做的修改,必須在檢視的可見範圍內
D.對檢視的操作,最終都會轉化成對基本表的操作
參考答案
本題的正確答案為BCD。
選項A說法不正確,複雜檢視不允許DML操作。
3 關於序列的說法,下列正確的是
A.序列是Oracle提供的可用於產生一系列唯一數字的資料庫物件。
B.通常情況下,一個序列為一張表提供主鍵值,但一個序列也可以為多個表提供主鍵值。
C.使用序列時,偽列NEXTVAL返回序列生成的下一個值。
D.任何時候都可以使用偽列CURRVAL返回當前序列值。
參考答案
本題的正確答案為ABC。
本題中D選項說法不正確,當序列建立以後,必須先執行一次NEXTVAL,之後才能使用CURRVAL。
4 簡述索引的原理及建立索引的意義
參考答案
索引是對錶的一列或多列進行排序的結構。因為絕大多數的搜尋方法在搜尋排序結構時效率都會大大提高,所以如果表中某一列經常被作為關鍵字搜尋,則建議對此列建立索引。
索引提供指標以指向儲存在表中指定列的資料值,根據指定的排序次序排列這些指標。資料庫使用索引的方式與使用書的目錄很相似:通過搜尋索引找到特定的值,然後跟隨指標到達包含該值的行。
5 列舉需要建立索引以及不適合建立索引的場合
參考答案
適合建立索引的場合為:
1)為經常出現在WHERE子句中的列建立索引。
2)為經常出現在ORDER BY、DISTINCT後面的欄位建立索引。如果建立的是複合索引,索引的欄位順序要和這些關鍵字後面的欄位順序一致。
3)為經常作為表的連線條件的列上建立索引
不適合建立索引的場合為:
1)不要在經常做DML操作的表上建立索引。
2)不要在小表上建立索引。
3)限制表上的索引數目,索引並不是越多越好。
6 簡述主鍵選取的原則
參考答案
主鍵的選取原則如下:
1)主鍵應是對系統無意義的資料。
2)永遠也不要更新主鍵,讓主鍵除了唯一標識一行之外,再無其他的用途。
3)主鍵不應包含動態變化的資料,如時間戳。
4)主鍵應自動生成,不要人為干預,以免使它帶有除了唯一標識一行以外的意義。
5)主鍵儘量建立在單列上。
7 簡述外來鍵約束的意義
參考答案
外來鍵約束維護資料的一致性。外來鍵約束條件包括兩個方面的資料約束:
1)從表上定義的外來鍵的列值,必須從主表被參照的列值中選取,或者為NULL。
2)當主表參照列的值被從表參照時,主表的該行記錄不允許被刪除。
8 簡述外來鍵約束對效能的影響,以及應對策略
參考答案
如果在一個頻繁DML操作的表上建立外來鍵,每次DML操作,都將導致資料庫自動對外來鍵所關聯的對應表做檢查,產生開銷,如果已在程式中控制邏輯,這些判斷將增加額外負擔,可以省去;外來鍵確定了主從表的先後生成關係,有時會影響業務邏輯。