这本书英文名叫“SQL Server 2008 Transact-SQL Recipes”,直译过来是《SQL Server 2008 T-SQL秘籍》或《SQL Server 2008 T-SQL处方》。英文版在amazon上用户评价是4星半。译成《SQL Server 2008实战》显然是编辑为了吸引更多的眼球加入了标题党。
这本书专门讲T-SQL(也就是Microsoft关于SQL的方言,有一部分只能用于Microsoft SQL Server的)。涉及T-SQL的各种应用。除常见的数据操作(简称DML,增删改查都属于DML)、数据定义(DDL,如建表、建存储过程),还有一半是讲数据库管理过程中可以用到的SQL,如管理用户、加密,CLR集成、备份、镜像等过程中使用的SQL。确实是T-SQL大全。我感觉书写的比较好。比较全面,讲解言简意赅,有不少实例。感觉比《SQL server 2005内幕》系列讲的好。
另外这本书中涉及到SQL Server 2008专用的特性,都明确提出。因此如果还在用SQL Server 2005,想找T-SQL手册,非常有必要选择这本书。这样可以在满足需求的基础上,还能了解到SQL Server 2008新增的特性。如果还在用SQL Server 2000或更早版本,也许这本书不是最佳选择。
目前我只看了一小部分。前面讲的新特性中,Merge比较实用,可以在一句话中执行insert、update、delete。好处应该有两点:第一是执行效率提高,原来可能要查三次,分别执行三次,现在可以改为查一次。第二是原来可能需要使用显式事务来保证数据的一致性,现在可以在一句话中执行完毕,不需要显式事务,减少了对资源的占用。
下面是一个例子:
MERGE INTO HumanResources.CorporateHousing p
USING dbo.StagingCorporateHousing s
ON p.UnitNBR = s.UnitNBR
WHEN MATCHED AND s.IsRentedIND <> p.IsRentedIND THEN
UPDATE SET IsRentedIND = s.IsRentedIND
WHEN NOT MATCHED BY TARGET THEN
INSERT (UnitNBR, IsRentedIND) VALUES (s.UnitNBR, s.IsRentedIND)
WHEN NOT MATCHED BY SOURCE THEN
DELETE;