SQL資料庫應聘人員面試時經常被問的問題

2021-08-30 20:21:38 字數 2620 閱讀 8408

目前在職場中很難找到非常合格的資料庫開發人員。有人說:「sql開發是一門語言,它很容易學,但是很難掌握。」

在面試應聘的sql server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排 列。當你問到關於主鍵和外來鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。

你能向我簡要敘述一下sql server 2000中使用的一些資料庫物件嗎?

你希望聽到的***括這樣一些物件:**、檢視、使用者定義的函式,以及儲存過程;如果他們還能夠提到像觸發器這樣的物件就更好了。如果應聘者不能回答這個基本的問題,那麼這不是乙個好兆頭。

null是什麼意思?

null(空)這個值是資料庫世界裡乙個非常難纏的東西,所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。

null這個值表示unknown(未知):它不表示「」(空字串)。假設您的 sql server資料庫裡有ansi_nulls,當然在預設情況下會有,對null這個值的任何比較都會生產乙個null值。您不能把任何值與乙個 unknown值進行比較,並在邏輯上希望獲得乙個答案。您必須使用is null操作符。

什麼是索引?sql server 2000裡有什麼型別的索引?

任何有經驗的資料庫開發人員都應該能夠很輕易地回答這個問題。一些經驗不太多的開發人員能夠回答這個問題,但是有些地方會說不清楚。

簡單地說,索引是乙個資料結構,用來快速訪問資料庫**或者檢視裡的資料。在sql server裡,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級儲存資料。這意味著不論聚集索引裡有**的哪個(或哪些)字段,這些欄位都 會按順序被儲存在**。由於存在這種排序,所以每個**只會有乙個聚集索引。非聚集索引在索引的葉級有乙個行識別符號。這個行識別符號是乙個指向磁碟上資料的 指標。它允許每個**有多個非聚集索引。

什麼是主鍵?什麼是外來鍵?

主鍵是**裡的(乙個或多個)字段,只用來定義**裡的行;主鍵裡的值總是唯一的。外來鍵是乙個用來建立兩個**之間關係的約束。這種關係一般都涉及乙個**裡的主鍵欄位與另外乙個**(儘管可能是同乙個**)裡的一系列相連的字段。那麼這些相連的字段就是外來鍵。

什麼是觸發器?sql server 2000有什麼不同型別的觸發器?

讓未來的資料庫開發人員知道可用的觸發器型別以及如何實現它們是非常有益的。

觸發器是一種專用型別的儲存過 程,它被**到sql server 2000的**或者檢視上。在sql server 2000裡,有instead-of和after兩種觸發器。instead-of觸發器是替代資料操控語言(data manipulation language,dml)語句對**執行語句的儲存過程。例如,如果我有乙個用於tablea的instead-of-update觸發器,同時對這個 **執行乙個更新語句,那麼instead-of-update觸發器裡的**會執行,而不是我執行的更新語句則不會執行操作。

after觸發器要在dml語句在資料庫裡使用之後才執行。這些型別的觸發器對於監視發生在資料庫**裡的資料變化十分好用。

您如何確乙個帶有名為fld1欄位的tableb**裡只具有fld1欄位裡的那些值,而這些值同時在名為tablea的**的fld1欄位裡?

這個與關係相關的問題有兩個可能的答案。第乙個答案(而且是您希望聽到的答案)是使 用外來鍵限制。外來鍵限制用來維護引用的完整性。它被用來確保**裡的字段只儲存有已經在不同的(或者相同的)**裡的另乙個欄位裡定義了的值。這個字段就是 候選鍵(通常是另外乙個**的主鍵)。

另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設定與維護,而且效能一般都很糟糕。由於這個原因,微軟建議開發人員使用外來鍵限制而不是觸發器來維護引用的完整性。

你正在尋找進行與資料操控有關的應聘人員。對乙個**的索引越多,資料庫引擎用來更新、插入或者刪除資料所需要的時間就越多,因為在資料操控發生的時候索引也必須要維護。

你可以用什麼來確保**裡的字段只接受特定範圍裡的值?

這個問題可以用多種方式來回答,但是只有乙個答案是「好」答案。您希望聽到的回答是check限制,它在資料庫**裡被定義,用來限制輸入該列的值。

觸發器也可以被用來限制資料庫**裡的字段能夠接受的值,但是這種辦法要求觸發器在**裡被定義,這可能會在某些情況下影響到效能。因此,微軟建議使用check限制而不是其他的方式來限制域的完整性。

如果應聘者能夠正確地回答這個問題,那麼他的機會就非常大了,因為這表明他們具有使用儲存過程的經驗。

返回引數總是由儲存過程返回,它用來表示儲存過程是成功還是失敗。返回引數總是int資料型別。

output引數明確要求由開發人員來指定,它可以返回其他型別的資料,例如字元型和數值型的值。(可以用作輸出引數的資料型別是有一些限制的。)您可以在乙個儲存過程裡使用多個output引數,而您只能夠使用乙個返回引數。

什麼是相關子查詢?如何使用這些查詢?

經驗更加豐富的開發人員將能夠準確地描述這種型別的查詢。

相關子查詢是一種包含子查詢的特殊型別的查詢。查詢裡包含的子查詢會真正請求外部查詢的值,從而形成乙個類似於迴圈的狀況。

面試前複習SQL資料庫1

觸發器是乙個特殊的儲存過程,當對指定的表進行某種特定操作 如 insert,delete或update 時,觸發器產生作用。觸發器可以呼叫儲存過程。觸發器的限制 乙個表最多只能有三個觸發器,insert,update,delete 每個觸發器只能用於乙個表 不能對檢視 臨時表建立觸發器 trunca...

資料庫SQL面試知識點整理

一 什麼是儲存過程?有哪些優缺點?儲存過程是一些預編譯的sql語句。更加直白的理解 儲存過程可以說是乙個記錄集,它是由一些t sql語句組成的 塊,這些t sql語句 像乙個方法一樣實現一些功能 對單錶或多表的增刪改查 然後再給這個 塊取乙個名字,在用到這個功能的時候呼叫他就行了。儲存過程是乙個預編...

資料庫面試 SQL相關概念及常用的SQL優化方式

in 和 not in 應避免使用,會導致全表掃瞄 應盡量避免在 where 子句中對字段進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄 不要使用select from t的形式進行查詢 避免出現隱式轉換,保持sql中變數型別與字段型別一直 當需要插入大量資料時,使用copy方式,避免執行大量...