在面試應聘的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 manipulationlanguage,dml)語句對**執行語句的儲存過程。例如,如果我有乙個用於tablea的instead-of-update觸發器,同時對這個**執行乙個更新語句,那麼instead-of-update觸發器裡的**會執行,而不是我執行的更新語句則不會執行操作。
after觸發器要在dml語句在資料庫裡使用之後才執行。這些型別的觸發器對於監視發生在資料庫**裡的資料變化十分好用。
您如何確乙個帶有名為fld1欄位的tableb**裡只具有fld1欄位裡的那些值,而這些值同時在名為tablea的**的fld1欄位裡?
這個與關係相關的問題有兩個可能的答案。第乙個答案(而且是您希望聽到的答案)是使用外來鍵限制。外來鍵限制用來維護引用的完整性。它被用來確保**裡的字段只儲存有已經在不同的(或者相同的)**裡的另乙個欄位裡定義了的值。這個字段就是候選鍵(通常是另外乙個**的主鍵)。
另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設定與維護,而且效能一般都很糟糕。由於這個原因,微軟建議開發人員使用外來鍵限制而不是觸發器來維護引用的完整性。
你正在尋找進行與資料操控有關的應聘人員。對乙個**的索引越多,資料庫引擎用來更新、插入或者刪除資料所需要的時間就越多,因為在資料操控發生的時候索引也必須要維護。
你可以用什麼來確保**裡的字段只接受特定範圍裡的值?
這個問題可以用多種方式來回答,但是只有乙個答案是「好」答案。您希望聽到的回答是check限制,它在資料庫**裡被定義,用來限制輸入該列的值。
觸發器也可以被用來限制資料庫**裡的字段能夠接受的值,但是這種辦法要求觸發器在**裡被定義,這可能會在某些情況下影響到效能。因此,微軟建議使用check限制而不是其他的方式來限制域的完整性。
如果應聘者能夠正確地回答這個問題,那麼他的機會就非常大了,因為這表明他們具有使用儲存過程的經驗。
返回引數總是由儲存過程返回,它用來表示儲存過程是成功還是失敗。返回引數總是int資料型別。
output引數明確要求由開發人員來指定,它可以返回其他型別的資料,例如字元型和數值型的值。(可以用作輸出引數的資料型別是有一些限制的。)您可以在乙個儲存過程裡使用多個output引數,而您只能夠使用乙個返回引數。
什麼是相關子查詢?如何使用這些查詢?
經驗更加豐富的開發人員將能夠準確地描述這種型別的查詢。
相關子查詢是一種包含子查詢的特殊型別的查詢。查詢裡包含的子查詢會真正請求外部查詢的值,從而形成乙個類似於迴圈的狀況。
資料庫 SQL基礎
1 建立表的格式create table 表名 列名稱1 資料型別,列名稱2 資料型別,列名稱3 資料型別,2 新增條件 設定此列是否可以為空,如果此列必須要填入資料則要在 列名稱後面新增not null 即 列名稱1 資料型別 not null 新增主鍵的兩種格式 1 列名稱1 資料型別 prim...
SQL資料庫基礎
sql資料庫基礎 一 引言 1 什麼是資料庫?資料庫 dbs 就是乙個以某種有阻止的方式儲存的集合。2 什麼是資料庫管理系統?資料庫管理系統 dbms 說白了就是方便運算元據庫的軟體,例如sql2005這個軟體,它就是資料庫管理系統。通過這個軟體可以鏈結到資料庫dbs,可以查詢 新建 刪除 更改資料...
SQL資料庫基礎
sql 概要 1.sql 語句 用關鍵字 表名和列名等組合而成的一條語句。2.3 種 sql 語句種類 1 ddl data definition language,資料定義語言 建立 刪除或修改資料庫以及資料庫中的表等物件。create 建立資料庫和表等物件 drop 刪除資料庫和表等物件 alt...