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

2021-05-11 20:11:10 字數 2755 閱讀 9292

年08月02日11:42**:賽迪網作者:tianjin字型大小:小|大

【文章摘要】在面試應聘的sql server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列。

當你問到關於主鍵和外來鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。

目前在職場中很難找到非常合格的資料庫開發人員。有人說:「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練習

建立學生student表 sno學號 主鍵3 sname姓名8 s 性別2 sbirthday生日 class班級5 建立課程course表 cno 課程號 主鍵 5 cname課程名10 tno教師號3 建立分數score表 sno 學號3 cno課程號5 degree分數 建立老師teacher...

Sql資料庫命名規則

資料庫涉及字元規則 採用26個英文本母 區分大小寫 和0 9這十個自然數,加上下劃線 組成,共63個字元。不能出現其他字元 注釋除外 資料庫物件命名規則 資料庫物件包括表 檢視 查詢 儲存過程 引數查詢 函式 約束。物件名字由字首和實際名字組成,長度不超過30。字首 使用小寫字母。例如 實際名字 實...

oracle資料庫設計sql檔案

步驟 第 一 建立使用者 第 二 建立表 第 三 儲存為指令碼 仿照scott指令碼檔案格式 第 四 實現隨機查詢。要求 1 使用define命令 2 使用prompt命令 2 地鐵運營資料庫 總表 3路地鐵,濟南 長清 濟南 章丘 濟南繞城 編號 唯一性約束 起止地點 起止時間 站點數量 發車間隔...