前言

前言

编写本书的目的在于架起两座桥梁:一是让数据库工程师从初级向中级进阶的桥梁,旨在帮助初级工程师提升自己;二是理论(原理)和实践之间的桥梁。这里所说的“初级”,具体是指已经掌握了 SQL 的基础知识和技能,具有半年到一年左右的使用经验这种水平。

我们来做一个测试,帮助大家了解一下自己处于何种水平。下面有 10 个问题,请回答 Yes 或 No。

  1. 没有在聚合函数中使用过 CASE 表达式。
  2. 想象不出自连接是如何工作的。
  3. 感觉 HAVING 子句不是很常用。
  4. 感觉 INEXISTS 好用,所以更喜欢用 IN
  5. 听到布尔类型,脑海里浮现出的只有 truefalse
  6. 设计表的时候不加 NOT NULL 的约束。
  7. SQL 全部用大写字母或全部用小写字母来写。
  8. 不能用一句话说出 GROUP BYPARTITION BY 的区别。
  9. 不知道 SQL 里的高阶函数的名字。
  10. 试着读过 Joe Celko 的《SQL 权威指南》1和《SQL 解惑(第 2 版)》2,但是感觉太难而没能读完(或者压根儿没有读过)。

1原书名为 Joe Celko's SQL for Smarties: Advanced SQL Programming,本书共有五版。国内引进了第 4 版,书名为《SQL 权威指南(第 4 版)》,朱巍等译,人民邮电出版社,2013 年。——编者注

2米全喜译,人民邮电出版社,2008 年 4 月。——编者注

大家的回答如何呢?如果全部都回答了 No,那很好,不要担心什么,请合上本书,立刻踏上成为一名高级工程师的道路吧(也许只有本书 3-2 节“参考文献”值得略读一下)。相反,如果一半以上都回答了 Yes,那么本书将照亮大家的前进之路——这正是编写本书的目的,相信大家读后一定会有收获。

但是,接下来要说的内容可能会让大家觉得有点前后矛盾。因为,这本书即将介绍的技术绝不是多么新潮的东西,而是遵循标准 SQL 的非常普通的技术。关于这一点,相信扫一眼目录你就会明白。CASE 表达式、自连接、HAVING 子句、外连接、关联子查询、EXISTS……这些都是数据库工程师日常工作中经常用到的技术。

编写本书的目的就是从新的角度把光照向这些“并没有什么特别的、谁都知道的技术”,照亮它们迄今都没有被看到的一面。相信大家读完本书时,会从那个一直以来都被认为平淡无奇的关系数据库的世界里,看到一些不一样的光辉。

下面,就让我们立刻前往博大精深的关系数据库的世界,开始探险之旅吧。

 

声明

※本书中的URL等信息可能会有变化。

※本书出版之际,我们力求准确阐述,但是翔泳社、原书作者、人民邮电出版社和译者均不对内容作任何保证,对于由本书内容和示例代码造成的一切后果,不承担任何责任。

※本书中的示例代码和脚本,以及执行结果页面都是基于特定环境的参考示例。

※本书中的公司名、商品名分别是相关公司的商标或注册商标。

目录

  • 版权声明
  • 译者序
  • 前言
  • 阅读本书时的注意事项
  • 第 1 章 神奇的SQL
  • 1-1 CASE表达式
  • 1-2 自连接的用法
  • 1-3 三值逻辑和 NULL
  • 1-4 HAVING子句的力量
  • 1-5 外连接的用法
  • 1-6 用关联子查询比较行与行
  • 1-7 用 SQL 进行集合运算
  • 1-8 EXISTS 谓词的用法
  • 1-9 用 SQL 处理数列
  • 1-10 HAVING子句又回来了
  • 1-11 让SQL飞起来
  • 1-12 SQL编程方法
  • 第 2 章 关系数据库的世界
  • 2-1 关系数据库的历史
  • 2-2 为什么叫“关系”模型
  • 2-3 开始于关系,结束于关系
  • 2-4 地址这一巨大的怪物
  • 2-5 GROUP BY和PARTITION BY
  • 2-6 从面向过程思维向声明式思维、面向集合思维转变的 7 个关键点
  • 2-7 SQL 和递归集合
  • 2-8 人类的逻辑学
  • 2-9 消灭 NULL 委员会
  • 2-10 SQL中的层级
  • 第 3 章 附录
  • 3-1 习题解答
  • 3-2 参考文献
  • 后记