sql面試題彙總

2021-05-21 12:46:26 字數 2832 閱讀 6429

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

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

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

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

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

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

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

簡單地說,索引是乙個資料結構,用來快速訪問資料庫**或者檢視裡的資料。在sql server裡,它們有兩種形式:聚集索引和非聚集索引。

聚集索引在索引的葉級儲存資料。這意味著不論聚集索引裡有**的哪個(或哪些)字段,這些欄位都會按順序被儲存在**。由於存在這種排序,所以每個**只會有乙個聚集索引。

非聚集索引在索引的葉級有乙個行識別符號。這個行識別符號是乙個指向磁碟上資料的指標。它允許每個**有多個非聚集索引。

null是什麼意思?

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

null這個值表示unknown(未知):它不表示「」(空字串)。假設您的sql server資料庫裡有ansi_nulls,當然在預設情況下會有,對null這個值的任何比較都會生產乙個null值。

您不能把任何值與乙個 unknown值進行比較,並在邏輯上希望獲得乙個答案。您必須使用is null操作符。

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

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

那麼這些相連的字段就是外來鍵。

什麼是觸發器?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限制而不是其他的方式來限制域的完整性。

返回引數和output引數之間的區別是什麼?

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

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

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

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

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

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

關於面試過程的思考

這些問題只不過是確定乙個sql server資料庫開發人員是否合格的起點。根據應聘者對上面這些問題的回答情況,我可能會要求他們參加我的tsql程式設計考試,這一般是一套根據不同情況進行的10到12個資料庫查詢。

您需要自己決定將要雇用的開發人員具有什麼樣的專業技能。然後,需要通過自己的經驗、判斷以及在面試時對應聘者的感受(來做最終決定)。

您在面試資料庫開發人員時一般會問哪些問題呢?讓我們一起來討論一下吧。

SQL語句面試題

2.請教乙個面試中遇到的sql語句的查詢問題 表中有a b c三列,用sql語句實現 當a列大於b列時選擇a列否則選擇b列,當b列大於c列時選擇b列否則選擇c列。create table tmp a int,b int,c int insert into tmp values 10 20 30 in...

面試題彙總

提問 1 新課改與新課程標準的價值取向是什麼?回答 新課程標準的價值取向是要求教師成為決策者而不是執行者,要求教師創造出班級氣氛 創造出某種學習環境 設計相應教學活動並表達自己的教育理念等等。提問 2 為什麼學生會偏科?回答 學生偏科有很多因素,專家認為興趣 態度是最主要的。你有心去學一門功課,無論...

面試題彙總

資料庫方面 1.oracle中的函式有哪些?答 日期函式 to date 數字函式 to number 字元函式 to char substr code 1,5 sysdate 2.sqlserver取前10條的記錄方法?oracle呢?答 sqlserver select top 10 from ...