在整理準備資料庫面試的過程中,先是在網上一頓海搜,找到曆史面試題,然後一個骨頭一個骨頭的啃完,現在基本上這些問題(或者說叫做實踐)都沒有問題了。遇到的困難是:PL/SQL居多,T-SQL太少,所以需要篩選,修改答案,甚至有一些在T-SQL裡面還沒有支援。
下一步再把資料庫T-SQL經典教程在翻看一遍,基本上對資料庫就算告一段落了,前前後後共整整1個多月的時間(去年10.1是二周,下載是三周),學習的還行吧。
下面的就是全部內容,大段摘錄的,或者是抄的,我都寫了出處;有一些實在忘記了,請見諒:向大家共用知識,想必也是作者的本願吧。
1. 三個範式
即: 屬性唯一, 記錄唯一, 表唯一
第一範式(1NF):資料庫表中的欄位都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字元型、邏輯型、日期型等。
第二範式(2NF):資料庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴(部分函數依賴指的是存在組合關鍵字中的某些欄位決定非關鍵字段的情況),也即所有非關鍵字段都完全依賴於任意一組候選關鍵字。
第三範式(3NF):在第二範式的基礎上,資料表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三範式。所謂傳遞函數依賴,指的是如果存在"A → B → C"的決定關係,則C傳遞函數依賴於A。因此,滿足第三範式的資料庫表應該不存在如下依賴關係: 關鍵字段 → 非關鍵字段x → 非關鍵字段y
2. 一些常識:http://www.enet.com.cn/article/2007/0802/ A20070802755140.shtml
² 簡要敘述一下SQL Server 2000中使用的一些資料庫物件
表格、視圖、使用者定義的函數,預存程序,觸發器等。
² NULL是什麼意思
NULL這個值表示UNKNOWN(未知):它不表示“”(Null 字元串)。假設您的SQL Server資料庫裡有ANSI_NULLS,當然在預設情況下會有,對NULL這個值的任何比較都會生產一個NULL值。您不能把任何值與一個 UNKNOWN值進行比較,並在邏輯上希望獲得一個答案。您必須使用IS NULL操作符。
使用ISNULL(var,value)來進行NULL判斷:當var為NULL的時候,var = value,並且返回value
² 什麼是索引?SQL Server 2000裡有什麼類型的索引?
索引是一個資料結構,用來快速存取資料庫表格或者視圖裡的資料。在SQL Server裡,它們有兩種形式:叢集索引和非叢集索引。叢集索引在索引的葉級儲存資料。這意味著不論叢集索引裡有表格的哪個(或哪些)欄位,這些欄位都會按順序被儲存在表格,物理順序和邏輯順序一致。由於存在這種排序,所以每個表格只會有一個叢集索引。非叢集索引在索引的葉級有一個行標識符。它允許每個表格有多個非叢集索引。
² 什麼是主鍵?什麼是外鍵?
主鍵是表格裡的(一個或多個)欄位,只用來定義表格裡的行;主鍵裡的值總是唯一的。外鍵是一個用來建立兩個表格之間關係的約束。這種關係一般都涉及一個表格裡的主鍵欄位與另外一個表(可能是同一表)裡的欄位。那麼這些相連的欄位就是外鍵。
² 什麼是觸發器?SQL Server 2000有什麼不同類型的觸發器?
有INSTEAD-OF和AFTER兩種觸發器。觸發器是一種專用類型的預存程序,它被捆綁到表格或者視圖上。INSTEAD-OF觸發器是替代資料操控語言(DML)語句對錶格執行語句的預存程序。例如,如果我有一個用於TableA的INSTEAD-OF-UPDATE觸發器,同時對這個表格執行一個更新語句,那麼INSTEAD-OF-UPDATE觸發器裡的代碼會執行,而不是我執行的更新語句則不會執行操作。
AFTER觸發器要在DML語句在資料庫裡使用之後才執行。這些類型的觸發器對於監視發生在資料庫表格裡的資料變化十分好用。
² 您如何確一個帶有名為Fld1欄位的TableB表格裡只具有Fld1欄位裡的那些值,而這些值同時在名為TableA的表格的Fld1欄位裡?
第一個答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性integrity。它被用來確保表格裡的欄位只儲存有已經在不同的(或者相同的)表格裡的另一個欄位裡定義了的值。這個欄位就是候選索引鍵(通常是另外一個表格的主鍵)。
另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設定與維護,而且效能一般都很糟糕。由於這個原因,微軟建議開發人員使用外鍵限制而不是觸發器來維護引用的完整性。
² 對一個投入使用的線上交易處理表格(OLTP)有過多索引需要有什麼樣的效能考慮?
對一個表格的索引越多,資料庫引擎用來更新、插入或者刪除資料所需要的時間就越多,因為在資料操控發生的時候索引也必須要維護。
² 你可以用什麼來確保表格裡的欄位只接受特定範圍裡的值?
Check限制,它在資料庫表格裡被定義,用來限制輸入該列的值。
觸發器也可以被用來限制資料庫表格裡的欄位能夠接受的值,但是這種辦法要求觸發器在表格裡被定義,這可能會在某些情況下影響到效能。