SQL Server面試問答之31天匯總
Pinal Dave最近發布了名為“SQL Server——面試問題及答案”的博文,這系列博文由31個部分組成,始于諸如“規范化是什么?”等常規主題,進而拓展到諸如“在執行ALTER DATABASE期間,ROLLBACK IMMEDIATE與WITH NO_WAIT之間的區別是什么?”等鮮為人知的主題。而且其中還涉及到數據倉庫,甚至有些訪客回復還提到了SQL Azure。
為了吸引你去閱讀他的系列博文,我們特意在這里引用了一些你即將學到的知識。例如,第7日中包括關于不同類型鎖的內容。
- 共享鎖:用于不更改或不更新數據的操作(只讀操作),比如SELECT語句。
- 更新鎖:用于可更新的資源。防止當多個會話在讀取、鎖定以及隨后可能進行的資源更新時發生常見的死鎖。
- 排他鎖:用于數據修改操作,比如INSERT 、UPDATE、或DELETE。確保不會同時對同一資源進行多重更新。
- 意向鎖:用于建立鎖的層次結構。意向鎖的類型如下:意向共享(IS)、意向排他(IX)、和意向排他共享(SIX)。
- 架構鎖:在執行依賴于表架構的操作時使用。架構鎖類型包括架構修改(Sch-M)和架構穩定性(Sch-S)。
- 大容量更新鎖:在向表進行大容量數據復制且指定了TABLOCK提示時使用。
此外,這系列文章還為在T-SQL下工作提供了很多小竅門,比如如何通過讀取@@Rowcount或者@@Recordcount來清除存儲在另一個變量中的值。
如果在Error檢查語句之后檢查@@Rowcount,那么由于@@Rowcount將被復位,因此@@Recordcount將得到0。而且如果在錯誤檢查語句之前檢查@@Recordcount,那么@@Error將會復位。為了在同一時間獲得@@Error和@@Rowcount,我們應將二者包括在同一語句中并將它們存儲在局部變量中。SELECT @RC = @@ROWCOUNT, @ER = @@ERROR
當你從OLTP(On-Line Transaction Processing,聯機事務處理)和規范化的表的世界遷移到需要OLAP(On-Line Analytical Processing,聯機分析處理)風格服務器的維度建模時,即使經驗豐富的開發者可能也會發現這個系列是很有幫助的。
原文鏈接:http://www.infoq.com/cn/news/2011/08/SQl-Server-Interview
查看英文原文:31 Days of SQL Server Interview Questions and Answers