编辑推荐
WHERE,就可以开始了。许多数据库开发人员所掌握的仅在于此,而使用这门语言可做的事情则远远不止这些。在本书中,SQL开发人员Anthony Molinaro倾诚奉献他多年积累的丰富经验,使我们能够充分利用SQL的强大功能。您将在本书中学到:
·实际上,在过去的10年中,对于SQL而言,窗口函数的使用是最重要的增强功能。SQL的使用者,绝不该错过这些函数。
·利用强大的数据库特定功能,例如SQL Server的PIVOT和UNPIVOT运算符,Oracle的MODEL子句,以及PostgreSQL的GENERATE_SERIES函数。..
·利用基干表,从行到列,或者从列到行,以不同方式查看数据,基干表便于行间计算,而且可以对结果集进行双倍“透视”。
·创建直方图,以直观方式展现数据,对可变范围的数据执行聚合运算,生成总计和小计结果,还有其他高级的数据仓库技术。
·字符串处理,您可以使用SQL来分析字符、单词或者是字符串的有界元素。
SQL 是计算机世界的语言,在用关系数据库开发报表时,将数据放入数据库以及从数据库中取出来,都需要SQL 的知识。很多人以一种马马虎虎的态度在使用SQL,根本没有意识到自己掌握着多么强大的武器。本书的目的是打开读者的视野,看看SQL 究竟能干什么,以改变这种状况。
本书是一本指南,其中包含了一系列SQL 的常用问题以及它们的解决方案,希望能对读者的日常工作有所帮助。本书将相关主题的小节归成章,如果读者遇到不能解决的SQL 新问题,可以先找到最可能适用的章,浏览其中各小节的标题,希望读者能从中找到解决方案,至少可以找到点灵感。
在这本书中有150 多个小节,这还仅仅是SQL 所能做的事情的一鳞半爪。解决日常编程问题的解决方案的数量仅取决于需要解决的问题的数量,本书没有覆盖所有问题,事实上也不可能覆盖;然而从中可以找到许多共同的问题及其解决方案,这些解决方案中用到许多技巧,读者学到这些技巧就可以将它们扩展并应用到本书不可能覆盖的其他新问题上。
毫无疑问,本书的目标是让读者看到,SQL 能够做多少一般认为是SQL 问题范围之外的事情。在过去的10 年间,SQL 走过了很长的路,许多过去只能用C 和JAVA等过程化语言解决的典型问题现在都可以直接用SQL 解决了,但是很多开发人员并没有意识到这一事实。本书就是要帮助大家认识到这一点。
现在,在对我刚才的话产生误解之前我先要申明:我是“如果没坏,就别去修它”这一教义的忠实信徒。例如,假如你有一个特定的业务问题要解决,目前只用 SQL检索数据,而其他复杂的业务逻辑由其他语言完成,如果代码没有问题,而且性能也过得去,那么,谢天谢地。我绝对无意建议你扔掉以前的代码重新寻求完全SQL 的解决方案;我只是请你敞开思想,认识到1995 年编程用的SQL 跟2005 年用的不是一回事,今天的SQL 能做的事要多得多。
作者简介
Anthony Molinaro是wireless Generation公司的数据库开发人员。他多年从事帮助开发人员改进其sQL查询的工作,具有丰富的实践经验。Anthony酷爱sQL,在相关领域,他小有名气,客户在遇到困难的sQL查询问题时,就会想到他,他总能起到关键作用。他博学多才,对关系理论有深入的理解,有9年解决复杂sQL问题的实战经验。Anthony通晓新的和功能强大的sQL功能,比如,添加到最新sQL标准中的窗口函数语法等。
目录:
第1章 检索记录
1.1 从表中检索所有行和列
1.2 从表中检索部分行
1.3 查找满足多个条件的行
1.4 从表中检索部分列
1.5 为列取有意义的名称
1.6 在WHERE子句中引用取别名的列
1.7 连接列值
1.8 在SELECT语句中使用条件逻辑
1.9 限制返回的行数
1.10 从表中随机返回n条记录
1.11 查找空值
1.12 将空值转换为实际值
1.13 按模式搜索
第2章 查询结果排序
2.1 以指定的次序返回查询结果
2.2 按多个字段排序
2.3 按子串排序
2.4 对字母数字混合的数据排序
2.5 处理排序空值
2.6 根据数据项的键排序
第3章 操作多个表
3.1 记录集的迭加
3.2 组合相关的行
3.3 在两个表中查找共同行
3.4 从一个表中查找另一个表没有的值
3.5 在一个表中查找与其他表不匹配的记录
3.6 向查询中增加联接而不影响其他联接
3.7 检测两个表中是否有相同的数据
3.8 识别和消除笛卡儿积
3.9 聚集与联接
3.10 聚集与外联接
3.11 从多个表中返回丢失的数据
3.12 在运算和比较时使用NULL值
第4章 插入、更新与删除
4.1 插入新记录
4.2 插入默认值
4.3 使用NULL代替默认值
4.4 从一个表向另外的表中复制行
4.5 复制表定义
4.6 一次向多个表中插入记录
4.7 阻止对某几列插入
4.8 在表中编辑记录
4.9 当相应行存在时更新
4.10 用其他表中的值更新
4.11 合并记录
4.12 从表中删除所有记录
4.13 删除指定记录
4.14 删除单个记录
4.15 删除违反参照完整性的记录
4.16 删除重复记录
4.17 删除从其他表引用的记录
第5章 元数据查询
第6章 使用字符串
第7章 使用数字
第8章 日期运算
第9章 日期操作
第10章 范围处理
第11章 高级查找
第12章 报表和数据仓库运算
第13章 分层查询
第14章 若干另类目标
附录A 窗口函数补充
附录B 回顾Rozenshtein