推荐两本我学SQL的启蒙书籍

Posted dbLenis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐两本我学SQL的启蒙书籍相关的知识,希望对你有一定的参考价值。

点击关注上方“SQL数据库开发”,

设为“置顶或星标”,第一时间送达干货

SQL专栏

SQL基础知识第二版
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> 

注:上面括号里的数字代表SQL的执行顺序

每一个阶段会做怎么样的数据处理也有详细的表述。

比如为什么在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,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群

以上是关于推荐两本我学SQL的启蒙书籍的主要内容,如果未能解决你的问题,请参考以下文章

数据库书籍推荐

[资源分享] 推荐两本电子书

两本产品设计开发的经典书籍

Linux学习书籍整理(从兴趣入门)

Python常考基础面试题文末送Python书籍两本

创新创业类书籍推荐