SQL Server面试问答之31天汇总
fmms 13年前
<p> Pinal Dave最近发布了名为“<a href="/misc/goto?guid=4958183670883561018">SQL Server——面试问题及答案</a>”的博文,这系列博文由31个部分组成,始于诸如“规范化是什么?”等常规主题,进而拓展到诸如“在执行ALTER DATABASE期间,ROLLBACK IMMEDIATE与WITH NO_WAIT之间的区别是什么?”等鲜为人知的主题。而且其中还涉及到数据仓库,甚至有些访客回复还提到了SQL Azure。</p> <p> 为了吸引你去阅读他的系列博文,我们特意在这里引用了一些你即将学到的知识。例如,<a href="/misc/goto?guid=4958183671620534192">第7日</a>中包括关于不同类型锁的内容。</p> <blockquote> <ul> <li>共享锁:用于不更改或不更新数据的操作(只读操作),比如SELECT语句。</li> <li>更新锁:用于可更新的资源。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见的死锁。</li> <li>排他锁:用于数据修改操作,比如INSERT 、UPDATE、或DELETE。确保不会同时对同一资源进行多重更新。</li> <li>意向锁:用于建立锁的层次结构。意向锁的类型如下:意向共享(IS)、意向排他(IX)、和意向排他共享(SIX)。</li> <li>架构锁:在执行依赖于表架构的操作时使用。架构锁类型包括架构修改(Sch-M)和架构稳定性(Sch-S)。</li> <li>大容量更新锁:在向表进行大容量数据复制且指定了TABLOCK提示时使用。</li> </ul> </blockquote> <p> 此外,这系列文章还为在T-SQL下工作提供了很多小窍门,比如如何通过读取@@Rowcount或者@@Recordcount来清除存储在另一个变量中的值。</p> <blockquote> <p>如果在Error检查语句之后检查@@Rowcount,那么由于@@Rowcount将被复位,因此@@Recordcount将得到0。而且如果在错误检查语句之前检查@@Recordcount,那么@@Error将会复位。为了在同一时间获得@@Error和@@Rowcount,我们应将二者包括在同一语句中并将它们存储在局部变量中。SELECT @RC = @@ROWCOUNT, @ER = @@ERROR</p> </blockquote> <p> 当你从OLTP(On-Line Transaction Processing,联机事务处理)和规范化的表的世界迁移到需要OLAP(On-Line Analytical Processing,联机分析处理)风格服务器的维度建模时,即使经验丰富的开发者可能也会发现这个系列是很有帮助的。<br /> <span style="font-weight:bold;">原文链接:</span><a href="/misc/goto?guid=4958183672373311433" target="_blank">http://www.infoq.com/cn/news/2011/08/SQl-Server-Interview</a></p> <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958183673106214377">31 Days of SQL Server Interview Questions and Answers<br /> <br /> </a></p>