说到 SQL ,大多数人都不陌生,不管你是 Java 、C++ 还是 .NET 开发人员,工作中你都要编写 SQL 查询。由于数据库是现代 Java 或者 Web 应用程序中不可或缺的组成部分,拥有良好的 SQL 技能在面试中也会得到青睐。

有关 SQL 学习,有很多经典入门书,比如,麻省理工学院的参考教材《SQL必知必会》、日系最易上手入门书《SQL基础教程》《SQL进阶教程》还有美亚 5 星好评的《SQL经典实例》,这些书都能让你在 SQL 起步阶段快速上手。

不过今天我们要说的这本,是一本新书,说它新是因为刚刚上市,但实际上这本书已经连续霸榜美国亚马逊数据库图书榜单长达 18 年之久。可以说是一本不折不扣、经得住时间推敲的经典好书。

这本书最早一版诞生于 2000 年,中文版《SQL查询凡人入门》由机械工业出版社出版。美国亚马逊上读者对这本书的评价,没有一版是低于 4 星的,堪称数据库图书中的神作。

作者是约翰·L.维斯卡斯(John L. Viescas),连续 20 年获得微软的 MVP,他还是拥有 50 多年经验的独立数据库咨询师。

有趣的是,在写这本书之前,他曾经认为自己是数据库 SQL 方面的专家,但是后来他发现自己其实是个“凡夫俗子”。他这样说道:

  • 如果你使用计算机程序来访问数据库系统中的信息,你很可能是凡夫俗子。使用应用程序内置的查询工具未能获得期望的信息时,你就需要研究底层的 SQL 语句,找出其中的原因。

  • 如果你最近在使用桌面数据库应用程序,却在使用它定义和查询所需的数据时举步维艰,你就是凡夫俗子。

  • 如果你是数据库程序员,需要跳出习惯性思维去解决一些复杂的问题,你就是凡夫俗子。

  • 如果你是精通某种数据库系统的专家,但需要将该系统中的数据整合到另一种支持 SQL 的系统中,你就是凡夫俗子。

怎么办,好怕自己已经踏上了“凡夫俗子”的道路。不过不用怕,这本书也许可以帮你。

468 页不薄也不厚,书中所有内容均基于 ISO 制定的新 SQL 数据库语言标准编写。重点讲解 SQL 查询和数据操作的相关主题,包括关系型数据库和 SQL、SQL 基础、多表操作、汇总和分组数据,以及修改数据集等内容。

相比于其他 SQL 图书,这本书更专注于 SQL 而不针对任何具体的数据库系统。是市面上罕有的讲解 SQL 查询的专著。全书分为六个部分:

第一部分

开篇作者简要介绍了数据库查询语言 SQL 的发展历程,并讨论一些确保数据库设计合理的简单规则。读完这一部分,你将大致了解关系型数据库是如何面世的,以及它是如何成为当今业界使用最广泛的数据库的。通过讲解这些,作者希望能够让你对你使用的数据库系统有些认识。

(书中示例)

第二部分

主要讲解的是 SQL 的基础。作者介绍了如何使用 SELECT 语句、如何编写表达式、如何使用 ORDER BY 子句进行排序,以及如何使用 WHERE 子句筛选数据。

(书中示例)

第三部分

主要讲解的是使用多个表。作者演示如何编写从多个表中获取数据的查询,包括如何使用内连接、外连接和 UNION 将表关联起来,以及如何使用子查询。

(书中示例)

第四部分

主要讲解的是数据汇总和分组。作者讨论如何获取汇总信息以及如何对其进行分组和筛选。在这一部分,你将学习 GROUP BY 和 HAVING 子句。

(书中示例)

第五部分

主要讲解的是修改数据集。作者讨论如何编写查询来修改表中的一系列行。在这一部分,你将学习如何使用 UPDATE、INSERT 和 DELETE 语句。

(书中示例)

第六部分

主要讲解的是如何解决棘手问题,并介绍更复杂的问题。在这一部分,你将拓宽视野,了解如何解决复杂的否定型问题和多条件问题、如何使用 CASE 执行条件测试、如何跳出习惯性思维使用非连接表(笛卡儿积),还将学习如何在 GROUP BY 中使用其他关键字来生成小计和累积以及将输出数据划分为多个子集。

(书中示例)

书的末尾还配有几个附录,列出了本书介绍过的所有 SQL 元素的语法图、示例数据库的结构、6 种主流数据库系统实现的日期和时间操作函数,以及可帮助你深入了解 SQL 的推荐读物。

作者针对 4 种数据库系统(Microsoft Access、Microsoft SQL Server、MySQL 和 PostgreSQL)提供了 5 个示例数据库。

以上就是对这本书的简单介绍,如果你是数据库新手,刚知道可使用 SQL 来获取所需的数据,那么这里有所有的 SQL 基础知识等你去探索。

如果你是专家级用户,但需要解决复杂的问题或集成多个支持 SQL 的系统,那么你会对如何利用数据库语言 SQL 的复杂功能有更深刻的认识。所以不管你处在 SQL 的什么阶段,这本绝对是你想要的!

美亚4.3星评

市面上罕有的讲解SQL查询的专著

《SQL查询:从入门到实践(第4版)》

约翰·L.维斯卡斯 著

袁国忠 译

拥有 50 多年经验的数据库专家倾囊相授,本书重点讲解 SQL 查询和数据操作的相关主题,包括关系型数据库和 SQL、SQL 基础、多表操作、汇总和分组数据,以及修改数据集等内容,针对编写 SQL 查询提供了轻松易懂的逐步指导,并包含上百个带有详细说明的例子。

作者简介

约翰·L.维斯卡斯(John L. Viescas),拥有 50 多年经验的独立数据库咨询师。职业生涯之初,作为系统分析师,负责为 IBM 大型机系统设计数据库应用程序;后在 Applied Data Research 任职,负责 IBM 大型机数据库产品的研发和客户支持。

1988 年加入 Tandem 计算机公司,负责开发和实现市场营销数据库程序。1993 年自创公司,为全球各种规模的企业提供数据库咨询和培训服务。

从 1993 年到 2015 年,创纪录地每年都被微软授予“最有价值专家”称号。

John 还写过多部关于数据库的著作,还为技术刊物写过许多文章,并在世界各地的会议和用户组会议上发表过演讲。

(滑动查看目录)

第一部分 关系型数据库和SQL

第1章 何谓关系型数据库 2

1.1 数据库类型  2

1.2 关系模型简史  2

1.3 关系型数据库剖析  4

1.4 学习关系型数据库有何好处 9

1.5 小结  10

第2章 确保数据库结构合理  11

2.1 为何在本书开头讨论数据库设计 11

2.2 为何要关心数据库结构是否合理 11

2.3 微调列  12

2.4 微调表  17

2.5 建立合理的关系  25

2.6 就这些吗  29

2.7 小结  29

第3章 SQL简史  31

3.1 SQL的起源  31

3.2 早期的厂商实现  32

3.3 标准应运而生  32

3.4 ANSI/ISO标准的发展历程 33

3.5 商用实现  36

3.6 展望未来  36

3.7 为何要学习SQL  36

3.8 本书基于哪个SQL版本 37

3.9 小结  37

第二部分 SQL基础

第4章 创建简单查询 40

4.1 SELECT简介  40

4.2 SELECT语句  41

4.3 说点题外话:数据和信息 42

4.4 将请求转换为SQL  43

4.5 消除重复行  47

4.6 对信息进行排序  48

4.7 保存所做的工作  51

4.8 语句举例  51

4.9 小结  57

4.10 练习  57

第5章 获取除简单列外的其他信息 59

5.1 何谓表达式  59

5.2 你要表示哪些类型的数据 60

5.3 修改数据类型:CAST函数 61

5.4 指定显式值  62

5.5 表达式类型  65

5.6 在SELECT子句中使用表达式 71

5.7 空值:Null  75

5.8 语句举例  77

5.9 小结  81

5.10 练习  82

第6章 筛选数据 84

6.1 使用WHERE提炼信息  84

6.2 定义查找条件  87

6.3 使用多个条件  98

6.4 再谈Null:一个注意事项 106

6.5 以不同的方式表示条件 109

6.6 语句举例  109

6.7 小结  114

6.8 练习  115

第三部分 使用多个表

第7章 集合思维 118

7.1 何谓集合  118

7.2 集合运算  119

7.3 SQL 集合运算  128

7.4 小结  133

第8章 内连接 135

8.1 何谓连接  135

8.2 内连接  135

8.3 内连接的用途  145

8.4 语句举例  146

8.5 小结  158

8.6 练习  158

第9章 外连接 161

9.1 何谓外连接  161

9.2 左/右外连接  162

9.3 全外连接  173

9.4 外连接的用途  175

9.5 语句举例  176

9.6 小结  184

9.7 练习  184

第10章 UNION 186

10.1 何谓UNION  186

10.2 使用UNION编写查询 187

10.3 UNION的用途  194

10.4 语句举例  194

10.5 小结  200

10.6 练习  200

第11章 子查询 202

11.1 何谓子查询  202

11.2 作为列表达式的子查询 203

11.3 作为筛选器的子查询 207

11.4 子查询的用途  214

11.5 语句举例  215

11.6 小结  222

11.7 练习  223

第四部分 数据汇总和分组

第12章 简单汇总 226

12.1 聚合函数  226

12.2 在筛选器中使用聚合函数  233

12.3 语句举例  234

12.4 小结  238

12.5 练习  238

第13章 数据分组 240

13.1 为何要将数据分组  240

13.2 GROUP BY子句  242

13.3 一些限制  247

13.4 GROUP BY的用途  249

13.5 语句举例  250

13.6 小结  255

13.7 练习  255

第14章 筛选分组数据 257

14.1 一种新的筛选方式  257

14.2 在哪里筛选更好  259

14.3 HAVING的用途  263

14.4 语句举例  264

14.5 小结  268

14.6 练习  269

第五部分 修改数据集

第15章 更新数据集 272

15.1 何谓更新 272

15.2 UPDATE语句 272

15.3 有些数据库系统允许在UPDATE子句中使用连接 278

15.4 UPDATE的用途  280

15.5 语句举例  281

15.6 小结  289

15.7 练习  290

第16章 插入数据集 291

16.1 何谓插入  291

16.2 INSERT语句  292

16.3 INSERT的用途  299

16.4 语句举例  299

16.5 小结  305

16.6 练习  305

第17章 删除数据集 307

17.1 何谓删除  307

17.2 DELETE语句  307

17.3 DELETE的用途  311

17.4 语句举例  312

17.5 小结  317

17.6 练习  317

第六部分 解决棘手问题

第18章 否定型问题和多条件型问题 320

18.1 简单地复习集合  320

18.2 解决否定型问题  323

18.3 根据多个肯定条件查找 327

18.4 语句举例  333

18.5 小结  343

18.6 练习  343

第19章 条件测试 346

19.1 条件表达式(CASE) 346

19.2 使用CASE解决问题 349

19.3 语句举例  354

19.4 小结  361

19.5 练习  361

第20章 使用非连接数据和“驱动”表 363

20.1 何谓非连接数据  363

20.2 使用非连接数据解决问题 366

20.3 使用“驱动”表解决问题 367

20.4 语句举例  371

20.5 小结  381

20.6 练习  382

第21章 执行复杂的分组计算 384

21.1 不同分组的合计  384

21.2 扩展GROUP BY子句  386

21.3 使用ROLLUP获取分层合计  387

21.4 使用CUBE计算各种组合的汇总 393

21.5 使用GROUPING SETS合并汇总 396

21.6 分组技术变种  398

21.7 语句举例  400

21.8 小结  405

21.9 练习  405

第22章 将数据划分到窗口中 407

22.1 将数据划分到窗口中有何用 407

22.2 计算行号  419

22.3 数据排名  420

22.4 将数据划分到五分位区间中 424

22.5 结合使用窗口和聚合函数 426

22.6 语句举例  429

22.7 小结  439

22.8 练习  439

附录A SQL标准语法图 441

附录B 示例数据库的结构 453

附录C 与日期和时间相关的数据类型、运算和函数 460

附录D 推荐读物 469

结语  470

文末畅聊

小伙伴留言说说你平时会用到 SQL 的哪些功能?你觉得在使用 SQL 的过程中,哪些操作难住了你?我们会在精选留言中选出 5 位获得这本 SQL 宝典。活动截至 2020.6.4。

推荐阅读

程序员想要学好数学,从认真读一本书开始!

作为谷歌开发者布道师,我为什么要写这本通俗的《数据压缩入门》(一)

CSS Tricks网站创始人作序推荐,这本书助你成为Web开发高手

☟ 一键拥有

【在看】一下,好书让更多人看到

霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典相关推荐

  1. 霸榜6个月!超60000+程序员关注!这个 AI 课凭什么成为畅销经典?

    提起人工智能,想必大多数人对它都不陌生,不管你是程序员还是在校大学生,或多或少都听说过它. 而且它的应用场景实在是太多了,无论是APP.线下服务.医疗.无人机.自动驾驶等等领域,都有它的影子. 可以说 ...

  2. 2022 QS世界大学排名发布!MIT霸榜,清北冲上全球前20

    转自:新智元 最新2022 QS世界大学排名来了! 今年的排名共有1300所院校上榜,是QS有史以来规模最大的一次世界大学排名. 在此次排名中,首次有2所中国大陆大学跻身世界TOP 20,即清华和北京 ...

  3. 连续10年霸榜第一?程序员「最常用」的编程语言是它?

    近日,StackOverflow 发布了<2022年度开发者调查报告>,了解的程序员朋友们应该知道,StackOverflow 年度开发者调查,是面向全球开发者进行的规模最大.最全面的一次 ...

  4. 勇夺全球AI基准测试18项冠军,中国厂商为何能霸榜?

    曾经很长一段时间里,业界都在谈论是否有必要设立AI基准测试.如今看来,随着人工智能对于算力的强烈渴求,如何发挥AI最大潜能.赋能数字化转型正成为全行业最大挑战,以 MLPerf™ 为代表的AI基准测试 ...

  5. 2021QS 榜单发布:计算机专业排名 MIT 斯坦福霸榜,清华北大进入前 20

    公众号 "菜鸟学Python", 设为 "星标" 和30w+一起学Python! 来自新智元 [导读]2021 QS 世界大学学科排名出炉了!最新排名涉及 51 ...

  6. 2021QS计算机专业排名发布:MIT斯坦福霸榜,清华北大进入前20

      转载于 新智元   来源:qs topuniversities 编辑:yaxin [新智元导读]2021 QS世界大学学科排名出炉了!最新排名涉及51个学科,横跨5大领域.在计算机科学专业排名中, ...

  7. 连续霸榜 Github!又有一个 Linux 神器出现了

    开源最前线(ID:OpenSourceTop) 猿妹综合整理 链接:https://github.com/aristocratos/bashtop 最近又有一个Linux神器出现了,连续霸榜Githu ...

  8. 连续霸榜丨EasyDL到底有多强?

    有没有需求,都可以试试EasyDL. 近日,全球权威咨询机构IDC发布调研报告显示,百度EasyDL再次取得亮眼成绩,继连续两年位列中国机器学习平台市场份额第一之后, 今年上半年继续保持第一. 说起E ...

  9. 连续10年霸榜第一 程序员「最常用」的编程语言是。。。。

    近日,StackOverflow 发布了<2022年度开发者调查报告>,了解的程序员朋友们应该知道,StackOverflow 年度开发者调查,是面向全球开发者进行的规模最大.最全面的一次 ...

最新文章

  1. 用鞋子给视障人士导航!这款“导盲鞋”可检测4米外障碍物,振动提醒躲避,一双2w5...
  2. 待删除未删除 问题解决
  3. Spring boot配置文件加载位置
  4. Python 面向对象1-面向对象介绍
  5. linux修改mac ethtool,ethtool命令
  6. PC端页面调用QQ聊天 - 封装篇
  7. 剑指Offer学习笔记(3)——解决面试题的思路
  8. 物联网卡不能使用的原因有哪些
  9. iOS仿京东分类菜单之UICollectionView内容
  10. 语音数据标注工具与平台
  11. 斐讯k2刷breed总结
  12. 微信小程序商城API文档
  13. 发表在OURDEV上的帖子
  14. objective-c感悟(四)class、catagory、class extension、optional
  15. jQuery uploadify 文件上传
  16. 烤仔的朋友们 | 从薯片到卫生纸,进入NFT市场的10大传统品牌大盘点
  17. 圣劳伦斯散热器举行北交所IPO上市辅导签约仪式
  18. 运维经理:如果连CentOS网络配置都不会,就收包袱走人吧
  19. php mysql 查询中文乱码_PHP查询MySQL返回中文乱码问题!!!
  20. 先学微机原理还是计算机组成原理,计算机组成原理学习指导

热门文章

  1. mysql的实验环境_第04 章 MYSQL实验环境创建
  2. 5教程 watchout_Unit 5单元复习学案设计
  3. ios 简书 获取通讯录信息_iOS 13获取用户通讯录需要注意的
  4. 用navixt连接mysql连接不上_AMD神秘新显卡现身CompuBench数据库,可能是7nm Navi
  5. mysql远程主机强迫关闭了一个现有连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...
  6. Android SDK Tools Setup 提示 “ java se development kit not found”
  7. ElasticSearch 2 (1) - Getting Start
  8. XSS学习-初出茅庐
  9. Discriminative Modeling vs Generative Modeling
  10. Battle for Wesnoth 1.8.4,开源战斗游戏