Microsoft SQL Server 2008技术内幕:T-SQL语言基础
ISBN:9787121095931
沉寂了一段时间,什么都没写,并不是没书可以推荐了,而是因为我正在钻研《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》(以下简称“TSQL基础”),让各位久等,实在不好意思。
最近SQLServer方面新书出得少,呃,应该说数据库方面的书出得少了,不知七月是否淡季。感觉没什么书可买了,却看见了TSQL基础。
总得来说TSQL基础阅读难度偏低,基础嘛,能多难读呢。因此具体内容上就不详细介绍了,反正基础知识讲来讲去也就是那些CRUD。不过这本书与其它基础书籍相比,还是有很大的亮点的。我不敢说我博览群书,但是从我观察一些书得到的经验来看,大多数SQLServer方面的基础书籍所写的内容还不如《SQLServer必知必会》,基本上那些废书都是照搬必知必会的那些套路,外加一些高深莫测的我们称之为“术语”的废话。一本书几百页,骗去我们无数的MONEY,而实际有用的内容就是必知必会那么点,你说出这种书不是出来骗钱是什么?
不过TSQL基础就不一样了,很明显作者不但精通SQLServer,而且在编写技术书籍方面有自己独到思想。
为什么这么说呢?这本书我觉得与一般的入门书相比有四个很重要的不同点。
一、巧妙地强调集合论,强调集合的思想。这里不得不特别提一下作者,Itzik Ben-Gan这个人是搞培训的,多少喜欢讲点理论。不过他这理论讲得不多不少,刚刚好。头一章就讲到集合论,并且在之后的章节中,常用一些集合论的说法来解释SQLServer的操作,甚至于第六章的名称直接就叫“集合运算”。我觉得这跟很多书是不一样的。比如国内一些废书,一上来就狂讲集合论,把人讲晕了之后又狂讲操作,让人搞不清楚集合论跟SQLServer到底是什么关系,相当讨厌。这本书则不然,往往是在你快忘掉集合论的时候忽然点一下,可能不是很明显,不过集合论始终能一直待在脑子里转,不用过多地解释,你也能很好地理解各种操作背后的意义。可能对于一些“只是临时用一下SQLServer”的人,讲集合论没什么意义,但是对于刚起步的DBA,我觉得是意义非凡的事情。所谓“以集合的思想思考问题”,如果起步的时候没有真正理解,据说有些人可能得花上两三年才能搞懂,所以我觉得开头很重要。
二、介绍各知识点的同时简明扼要地指出需要注意的问题。 SQL92与SQL89的语法,功能上是完全一样的,但是新语法与旧语法相比有什么优点?独立子查询和相关子查询都能实现同样的效果,那么选哪个好?子查询也能实现,表表达式也能实现,为什么选前者或者后者?这些问题常常把执著的新手搞得夜不能寐(比如我)。常见的一些书上也很少提及这些,而网上的资料的描述常常又显得不那么准确。系统而准确地讲这些要点,我觉得这才是这本书的关键所在。就好像少林武功,那些套路全世界都知道,但是做每一个动作的时候如何呼吸才最有杀伤力(就是所谓内功啦),向来是那些老和尚们向小和尚口口相传。外功都是好学的嘛,可内功才是关键,你没看那郭靖用强大的内功加上从不翻新的十八掌就能横行天下自称大侠了吗?呵呵,这本书就是多了些“吐纳呼吸的法门”,所以显得很不一般。你想当大侠吗?拯救世界的任务就交给你了!
三、各章最后都有极具针对性的一些小练习,并附有参考答案。其实我本来是有点讨厌这样的练习的,因为我总觉得那些中国式教材才会出现这样的题目。但是我发现这本书的练习不大一样,关键是它的针对性很强,操作性很强,对于刚入门的人来说,不花点脑力也不看参考答案就想轻松解决书里的练习是有点挑战性的。而且从我一直以来工作的经验来看,书中的练习很有实战的味道。参考答案也不仅仅是答完就完了,感觉还带有一点讲解的意思。可见作者对此书算是很上心了,诚心为读者考虑的书,我当然得推荐一下。不过我坦白一下,由于我实在讨厌所谓“课后练习”,一开始我一直就没看那些练习,直到我看完最后一章,才回头翻了一下那些题目——还好我翻了一下,呵呵!
四、在SQL2008与之前版本不同的地方都有明确的说明,并分别指出在新旧版本SQLServer中如何实现同样的操作。这个情况最典型的地方就是INSERT语句的讲解。SQL2008的一个INSERT语句可以插入多行数据,而旧的版本中一个INSERT只能插一行。作者在此不但讲解了在SQL2008中INSERT的写法,还将实现相同功能的旧版中的写法也一一道来,一行不落(参见Page104,生成数字表)。同样的功能实在无法在旧版SQLServer中实现的,或者用旧版SQLServer实现有缺点的,作者也会明确提示。足见作者对SQLServer产品系列保持着长期而细致的关注。要是把这个事情专门讲下去,说不定作者会告诉你SQLServer采用的默认字体发过怎样的变化!
不过这本书毕竟只是基础,属于扫盲性的书。所有的知识点都仅限于“基础”部分,完全没有更深入的内容,我想说“作者真是拿捏得恰到好处”,但是心里又觉得“作者好小气”。反正对于基础知识来说,这本书算是讲得很到位了,真正SQLServer的DBA,入门应该读这样的书,必知必会这类的还是留给项目经理们去扫盲吧。
话说回来,这本书的最后一章我不太满意。只有"GO n 选项”和“动态SQL”讲得马马虎虎,其它都像蜻蜓点水,讲得太少了。
嗯,又到了最后的广告时间,我的QQ群是112782249,我是群主,希望能与志同道合的人多多交流SQLServer技术!本人非工作时间可以随时提供免费技术支持,有需要的可以进群里喊我。我的手机号是15190263102,电邮是ybyebo2002@yahoo.com.cn。一般每天早晨都会检查一下电邮,手机24小时开机,欢迎咨询,不过无故勿扰。