1. 程式人生 > >面試中常問到的資料庫的一些問題

面試中常問到的資料庫的一些問題

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操作,都將導致資料庫自動對外來鍵所關聯的對應表做檢查,產生開銷,如果已在程式中控制邏輯,這些判斷將增加額外負擔,可以省去;外來鍵確定了主從表的先後生成關係,有時會影響業務邏輯。