《SQL Server 2005技术内幕:T-SQl查询》:T-SQL进阶必读
本书前三章讲原理,后面讲具体的技巧。译者赵立东的建议是前三章非常值得读,如果没时间的话,可以只看前三章。我现在看到第六章了(共9章),感觉确实如赵立东所说,前三章讲sql的原理,比较深入,非常值得一看,后面讲一些sql应用方面的主题,同样很深入,我认为也很值得看。具体的目录可以参见http://product.dangdang.com/product.aspx?product_id=20101939
因为比较深入,因此本书不是一本t-sql入门书,我的看法是最适合写了好几年代码自己认为对t-sql很熟悉了但是从来没系统学习过t-sql的人。中文书中还有一本水平比较高的《Transact-SQL权威指南》,微软内部的一位sql专家也比较推荐,我还没看,中译本是2002年出的,肯定不会讲到sql server 2005的内容。因此我还是先看这本书了。
下面摘抄几处书中比较经典的文字:
1:在筛选器中比较两个NULL值将得到UNKNOWN,它会被当作false处理,就像其中一个NULL不等于另外一个NULL。
而UNIQUE约束、排序操作和分组操作认为两个NULL值是相等的。
2:不带else子句的case表达式包含一个隐含的else NULL。
3:尽管通常使用select * 不是一个好习惯,但是在exists子句中可以放心使用。因为exists只关心行是否存在,不关心特定属性,优化器将忽略子查询中的select列表。
4:一个好的实践是在子查询中总是为所有属性限制表名称或别名,即使子查询是独立子查询也应该如此。
5:除了一个例外之外,在 inner join的on子句中或where子句中指定逻辑表达式没有任何区别。
页:
[1]