高级SQL和数据库书籍和资源

2020-05-11 15:04:51

对于精通SQL的人来说,我得到的一个常见问题是,如果您完成了课程和全部150多个练习,此时您将对SQL有很强的掌握能力,并且可以轻松编写各种复杂的查询。然而,有效地使用数据库还有更多的内容--您可能会开始对数据库设计、性能、事务、锁定、日志记录、安全性、配置等话题感兴趣。或者,您可能想更深入地研究您正在使用的数据库的特定功能(例如,Microsoft SQL Server、MySQL、PostgreSQL等)。

所以,我已经把我推荐的一些书和录像带整理了一个简短的清单。注意,大多数资源都集中在关系数据库上,因为它是我的掌舵人(我发现Postgres在紧要关头也可以成为一个非常棒的非关系数据库,这要归功于一些很棒的扩展)。好好享受吧!

为了最大限度地利用您正在使用的数据库,特别是在性能方面,您需要更多地了解它是如何在幕后工作的。我推荐两个很棒的资源。

这门课的讲师是卡内基梅隆大学(Carnegie Mellon University)的安迪·帕夫洛(Andy Pavlo),他相当奇特,但总是很有趣(我相信他会认为开场白是一种恭维),这是一门非常棒的数据库内部入门课程。所有讲座都可以在YouTube上获得,内容涵盖从索引到事务、日志记录以及如何实现不同的查询算法等方方面面。同样奇妙的是,你可以访问完整的课程课程,包括作业和项目,如果你想要一些动手练习的话,你可以自己完成这些作业和项目。

我最近才开始学习这些讲座,但从我到目前为止看到的情况来看,它们和入门内容一样优秀。重点似乎特别放在介绍入门课程中引入的更严格的概念上。

解释SQL性能的伟大之处在于,它只从一点理论开始(涵盖B树和索引的真正含义),然后很快就进入了一个巨大的节奏,缓慢地、一点一滴地构建查询,然后查看并解释它们的执行计划。这样,您就对编写查询的不同方式如何改变执行计划建立了非常牢固的基础理解。它也与数据库无关,因此无论您使用的是Oracle还是MySQL等,这些概念都同样适用。

SQL反模式涵盖了大约25种不同的所谓反模式,涉及数据库设计、查询编写以及软件开发堆栈。每个反模式都伴随着对它是什么的描述、您通常想要避免它的原因以及解决方案。我认为这是一本很棒的第一本书,适合那些对SQL和数据库设计都很熟悉的人,并且准备退一步,不仅反思数据库和查询设计的内容,而且反思数据库和查询设计的方式和原因-这会促使人们反思,例如,一个大查询是否真的应该写成几个较小的查询(第18章:意大利面查询)等等。如果你已经准备好迈出第一步,这是一个很好的选择。

“SQL的艺术”是继SQL反模式之后的一本好书-从很多方面来说,它是抽象阶梯上的一个台阶,更多地反映了编写正确的SQL的策略和方法,这些策略和方法将经受住时间的考验(同时还引用了孙子的“孙子兵法”)。“SQL的艺术”是一本值得一读的书,在许多方面,它是抽象阶梯上的一个台阶,反映了更多关于编写经得起时间考验的正确SQL的策略和方法。如果这一切对你来说听起来有点太自命不凡--就像我刚开始那样--别担心,孙子的东西是保持在最低限度的,你基本上可以忽略它。正如我看到另一位评论家提到的那样,这不是一本烹饪书,它不会教你食谱,但它会让你成为一名更好的厨师--我认为这是一个很棒的表达方式。

在我的职业生涯中,我广泛使用过两个数据库-PostgreSQL和SQL Server。因此,我只能分享这些建议。如果您对MySQL、Oracle等有什么推荐,请告诉我!

虽然现在你会发现很多人说只要使用Postgres就行了,但不幸的是,关于如何管理PostgreSQL、如何安全地设置PostgreSQL、如何在生产中运行等方面的优秀指南并不多。不幸的是,这本书并没有完全解决这个问题--但它至少对你有所帮助。它介绍了如何执行一些核心数据库管理任务(设置用户、角色、备份和恢复)、psql和pgAdmin的使用,以及如何设置复制。如果这对您来说是一个新领域,这是一本让您开始使用PostgreSQL管理的好书。

PostgreSQL的艺术是Postgres的主要贡献者Dimitri Fontaine写的一本伟大的书。我喜欢这本书的地方是它完全专注于PostgreSQL可以为您做什么,无论是在特殊的PostgreSQL特定数据类型方面、SQL增强方面、编写PL/pgSQL函数方面,还是使用内置的通知系统方面-本书没有试图向您展示ANSI方法。这本书让我对波斯格雷斯有了更深刻的欣赏。

Microsoft SQL Server是我广泛使用的第一个数据库,我第一次学习SQL是通过Itzik Ben-gan的T-SQL基础的早期版本。所以我真的很高兴在这里推荐T-SQL查询。这是一本内容丰富的大书,可能是整个书单中最高级的一本书。与你坐下来从头到尾阅读的东西相比,它真的更像是一本参考书。我个人发现,在以前的公司实现一些分析仪表板时,对于BI从业者来说,关于窗口函数和T-SQL的章节非常有价值。