点击关注上方“SQL数据库开发”,
今天给大家推荐这本书,市面上其实已经没有出版了,能买到的都是二手书或电子书。它就是《Microsoft SQL Server 2008技术内幕》上下卷:Microsoft SQL Server 2008技术内幕:T-SQL语言基础Microsoft SQL Server 2008技术内幕:T-SQL查询刚工作的时候,公司用的是SQL Server的数据库,SQL知识还是比较薄弱的,会简单的CURD,还会点行转列之类的知识,勉勉强强可以应付工作上的一些需要。
随着需求的增加,越发感到力不从心,还好当时遇到的经理好心给我推荐了这两本书。一开始也就随便看看,越往后看越感到如获至宝。《T-SQL语言基础》这本书特别适合像我这样的初学者,有点基础但是对于一些原理性的东西知之甚少。它从SQL语句的执行顺序开始讲起:(8)SELECT (9)DISTINCT(11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list> 比如为什么在GROUP BY后面不能使用SELECT 后面列的别名?原因就是GROUP BY发生在前,而别名是在SELECT阶段才会被执行,一个后执行的别名怎么能提前在GROUP BY后面使用呢?(注意:MySQL在GROUP BY后面可以使用别名,与SQL Server的执行逻辑有所区别)此外其中让我印象非常深刻的是它的集合论:所有的查询均可以看作一个集合。
SELECT * FROM Customers c
JOIN Orders o ON c.CustomerID=o.CustomerID
就可以理解成集合Customers中的CustomerID同时存在于集合Orders 里面,我们用图可以这样表示:看到这里我就感觉突然豁然开朗了,特别是一些子查询,IN,EXISTS,UNION等等均可以看作是集合,我们写的所有查询其实都是在进行各种的集合运算。上卷基本把我们日常工作中会用到的内容都讲到了,具体目录如下:强烈推荐新手同学把上卷认真看完,好能够多看几遍,直到现在我也还会偶尔翻一下,加深记忆。
《T-SQL查询》这本主要讲述的如何提高SQL代码质量的一些内容,优化部分内容较多,对于想进一步提高SQL技能的也是非常实用的。前面3章主要是回顾上卷的核心内容,后面的章节就是一些SQL高阶技能的具体阐述了,基本涵盖了查询过程中所有可能会遇到的知识点。特别是查询优化章节写的非常好,我在工作中使用到的一些提高查询的方法大多都是来源于此。以上就是这两本书的相关介绍了,有需要的小伙伴可以网上搜索一下。
后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群