SQL Cookbook中文版
SQL Cookbook中文版
Anthony Molinaro
王强, 王晓娟 等 译
出版时间:2007年09月
页数:502
问题:您知道SQL查询语言的基础知识,而且,感到自己并没有充分利用SQL强大的能力。在把数据跨越网络放到应用中之前,您希望能够学会如何使用SQL在数据库中做更多的事情。您希望充分掌握SQL的使用技巧,迈向一个新的台阶。
解决方案:购买本书。看看与您的问题相关的解决方案,从这些方案中,学习并应用技术。SQL语言学起来似乎很简单。掌握了简单的语句,比如SELECT <columns> FROM <table> WHERE <condition>,就可以开始了。许多数据库开发人员所掌握的仅在于此,而使用这门语言可做的事情则远远不止这些。在本书中,SQL开发人员Anthony Molinaro倾诚奉献他多年积累的丰富经验,使我们能够充分利用SQL的强大功能。您将在本书中学到:
●实际上,在过去的10年中,对于SQL而言,窗口函数的使用是最重要的增强功能。SQL的使用者,绝不该错过这些函数。
●利用强大的数据库特定功能,例如SQL Server的PIVOT和UNPIVOT运算符,Oracle的MODEL子句,以及PostgreSQL的GENERATE_SERIES函数。
●利用基干表,从行到列,或者从列到行,以不同方式查看数据,基干表便于行间计算,而且可以对结果集进行双倍“透视”。
●创建直方图,以直观方式展现数据,对可变范围的数据执行聚合运算,生成总计和小计结果,还有其他高级的数据仓库技术。
●字符串处理,您可以使用SQL来分析字符、单词或者是字符串的有界元素。
本书是按照O'Reilly流行的问题、解决方案、讨论的方式来编写的。本书会让读者满意。Anthony信奉:“只要手中有这本书,您的工作就可以正常运转,它绝对物有所值,您将喜欢它,与它共同度过美好时光,并享受其中”。Anthony绝对不会浪费您的宝贵时间。他本着认真求实的态度编写本书,有了本书,您的问题都可以迎刃而解。
  1. 前言
  2. 第1章 检索记录
  3. 1.1 从表中检索所有行和列
  4. 1.2 从表中检索部分行
  5. 1.3 查找满足多个条件的行
  6. 1.4 从表中检索部分列
  7. 1.5 为列取有意义的名称
  8. 1.6 在WHERE子句中引用取别名的列
  9. 1.7 连接列值
  10. 1.8 在SELECT语句中使用条件逻辑
  11. 1.9 限制返回的行数
  12. 1.10 从表中随机返回n条记录
  13. 1.11 查找空值
  14. 1.12 将空值转换为实际值
  15. 1.13 按模式搜索
  16. 第2章 查询结果排序
  17. 2.1 以指定的次序返回查询结果
  18. 2.2 按多个字段排序
  19. 2.3 按子串排序
  20. 2.4 对字母数字混合的数据排序
  21. 2.5 处理排序空值
  22. 2.6 根据数据项的键排序
  23. 第3章 操作多个表
  24. 3.1 记录集的叠加
  25. 3.2 组合相关的行
  26. 3.3 在两个表中查找共同行
  27. 3.4 从一个表中查找另一个表没有的值
  28. 3.5 在一个表中查找与其他表不匹配的记录
  29. 3.6 向查询中增加联接而不影响其他联接
  30. 3.7 检测两个表中是否有相同的数据
  31. 3.8 识别和消除笛卡儿积
  32. 3.9 聚集与联接
  33. 3.10 聚集与外联接
  34. 3.11 从多个表中返回丢失的数据
  35. 3.12 在运算和比较时使用NULL值
  36. 第4章 插入、更新与删除
  37. 4.1 插入新记录
  38. 4.2 插入默认值
  39. 4.3 使用NULL代替默认值
  40. 4.4 从一个表向另外的表中复制行
  41. 4.5 复制表定义
  42. 4.6 一次向多个表中插入记录
  43. 4.7 阻止对某几列插入
  44. 4.8 在表中编辑记录
  45. 4.9 当相应行存在时更新
  46. 4.10 用其他表中的值更新
  47. 4.11 合并记录
  48. 4.12 从表中删除所有记录
  49. 4.13 删除指定记录
  50. 4.14 删除单个记录
  51. 4.15 删除违反参照完整性的记录
  52. 4.16 删除重复记录
  53. 4.17 删除从其他表引用的记录
  54. 第5章 元数据查询
  55. 5.1 列出模式中的表
  56. 5.2 列出表的列
  57. 5.3 列出表的索引列
  58. 5.4 列出表约束
  59. 5.5 列出没有相应索引的外键
  60. 5.6 使用SQL来生成SQL
  61. 5.7 在Oracle中描述数据字典视图
  62. 第6章 使用字符串
  63. 6.1 遍历字符串
  64. 6.2 字符串文字中包含引号
  65. 6.3 计算字符在字符串中出现的次数
  66. 6.4 从字符串中删除不需要的字符
  67. 6.5 将字符和数字数据分离
  68. 6.6 判别字符串是不是字母数字型的
  69. 6.7 提取姓名的大写首字母缩写
  70. 6.8 按字符串中的部分内容排序
  71. 6.9 按字符串中的数值排序
  72. 6.10 根据表中的行创建一个分隔列表
  73. 6.11 将分隔数据转换为多值IN列表
  74. 6.12 按字母顺序排列字符串
  75. 6.13 判别可作为数值的字符串
  76. 6.14 提取第n个分隔的子串
  77. 6.15 分解IP地址
  78. 第7章 使用数字
  79. 7.1 计算平均值
  80. 7.2 求某列中的最小/最大值
  81. 7.3 对某列的值求和
  82. 7.4 求一个表的行数
  83. 7.5 求某列值的个数
  84. 7.6 生成累计和
  85. 7.7 生成累乘积
  86. 7.8 计算累计差
  87. 7.9 计算模式
  88. 7.10 计算中间值
  89. 7.11 求总和的百分比
  90. 7.12 对可空列作聚集
  91. 7.13 计算不包含最大值和最小值的均值
  92. 7.14 把字母数字串转换为数值
  93. 7.15 更改累计和中的值
  94. 第8章 日期运算
  95. 8.1 加减日、月、年
  96. 8.2 计算两个日期之间的天数
  97. 8.3 确定两个日期之间的工作日数目
  98. 8.4 确定两个日期之间的月份数或年数
  99. 8.5 确定两个日期之间的秒、分、小时数
  100. 8.6 计算一年中周内各日期的次数
  101. 8.7 确定当前记录和下一条记录之间相差的天数
  102. 第9章 日期操作
  103. 9.1 确定一年是否为闰年
  104. 9.2 确定一年内的天数
  105. 9.3 从日期中提取时间的各部分
  106. 9.4 确定某个月的第一天和最后一天
  107. 9.5 确定一年内属于周内某一天的所有日期
  108. 9.6 确定某月内第一个和最后一个“周内某天”的日期
  109. 9.7 创建日历
  110. 9.8 列出一年中每个季度的开始日期和结束日期
  111. 9.9 确定某个给定季度的开始日期和结束日期
  112. 9.10 填充丢失的日期
  113. 9.11 按照给定的时间单位进行查找
  114. 9.12 使用日期的特殊部分比较记录
  115. 9.13 识别重叠的日期范围
  116. 第10章 范围处理
  117. 10.1 定位连续值的范围
  118. 10.2 查找同一组或分区中行之间的差
  119. 10.3 定位连续值范围的开始点和结束点
  120. 10.4 补充范围内丢失的值
  121. 10.5 生成连续数字值
  122. 第11章 高级查找
  123. 11.1 给结果集分页
  124. 11.2 跳过表中n行
  125. 11.3 在外联接中用OR逻辑
  126. 11.4 确定哪些行是彼此互换的
  127. 11.5 选择前n个记录
  128. 11.6 找到包含最大值和最小值的记录
  129. 11.7 存取“未来”行
  130. 11.8 轮换行值
  131. 11.9 给结果分等级
  132. 11.10 抑制重复
  133. 11.11 找到骑士值
  134. 11.12 生成简单的预测
  135. 第12章 报表和数据仓库运算
  136. 12.1 将结果集转置为一行
  137. 12.2 把结果集转置为多行
  138. 12.3 反向转置结果集
  139. 12.4 将结果集反向转置为一列
  140. 12.5 抑制结果集中的重复值
  141. 12.6 转置结果集以利于跨行计算
  142. 12.7 创建固定大小的数据桶
  143. 12.8 创建预定数目的桶
  144. 12.9 创建横向直方图
  145. 12.10 创建纵向直方图
  146. 12.11 返回未包含在GROUP BY中的列
  147. 12.12 计算简单的小计
  148. 12.13 计算所有表达式组合的小计
  149. 12.14 判别非小计的行
  150. 12.15 使用Case表达式给行做标记
  151. 12.16 创建稀疏矩阵
  152. 12.17 按时间单位给行分组
  153. 12.18 对不同组/分区同时实现聚集
  154. 12.19 对移动范围的值进行聚集
  155. 12.20 转置带小计的结果集
  156. 第13章 分层查询
  157. 13.1 表示父-子关系
  158. 13.2 表示子-父-祖父关系
  159. 13.3 创建表的分层视图
  160. 13.4 为给定父行找到所有子行
  161. 13.5 确定哪些行是叶节点、分支节点及根节点
  162. 第14章 若干另类目标
  163. 14.1 使用SQL Server的PIVOT运算符创建交叉表报表
  164. 14.2 使用SQL Server的UNPIVOT运算符反转置交叉表报表
  165. 14.3 使用Oracle的MODEL子句转换结果集
  166. 14.4 从不固定位置提取字符串的元素
  167. 14.5 求一年包含的天数(Oracle的另一种解决方案)
  168. 14.6 搜索字母数字混合的字符串
  169. 14.7 使用Oracle把整数转换为二进制数
  170. 14.8 转置已分等级的结果集
  171. 14.9 给两次转置的结果集增加列头
  172. 14.10 在Oracle中把标量子查询转换为复合子查询
  173. 14.11 把连续数据分解为行
  174. 14.12 计算相对于总数的百分数
  175. 14.13 从Oracle创建CSV格式输出
  176. 14.14 找到与模式不匹配的文本(Oracle)
  177. 14.15 用内联视图转换数据
  178. 14.16 测试一个组内是否存在某个值
  179. 附录A 窗口函数补充
  180. 附录B 回顾Rozenshtein
书名:SQL Cookbook中文版
作者:Anthony Molinaro
译者:王强, 王晓娟 等 译
国内出版社:清华大学出版社
出版时间:2007年09月
页数:502
书号:978-7-302-15493-8
原版书出版商:O'Reilly Media
Anthony Molinaro
 
Anthony Molinaro是Wireless Generation公司的数据库开发人员。他多年从事帮助开发人员改进其SQL查询的工作,具有丰富的实践经验。Anthony 酷爱SQL,在相关领域,他小有名气,客户在遇到困难的SQL查询问题时,就会想到他,他总能起到关键作用。他博学多才,对关系理论有深入的理解,有9年解决复杂SQL问题的实战经验。Anthony通晓新的和功能强大的SQL功能,比如,添加到最新SQL标准中的窗口函数语法等。
 
 
封面上的动物是飞龙科蜥蜴,这种蜥蜴属于飞龙科家族,有300多个类别。飞龙科蜥蜴生存在非洲、亚洲、澳大利亚以及南部欧洲,它们的特点是,腿粗壮有力,有些种类还可以变色。与其他蜥蜴物种不同的是,飞龙科蜥蜴如果丢了尾巴,没有再生能力。它们的适应能力强,能生存在迥然不同的环境中,从酷热难耐的热带沙漠,到温暖湿润的热带雨林,都有它们的身形足迹。
飞龙科蜥蜴有些种类还是人们的宠物呢,比如鬃蜥(鬃狮蜥物种)。它们性格安静,样子有些古怪,个头只有20英寸大小。但即便是个子小,它们也算是“巨大的”蜥蜴了,因而需要有充足的空间。雄性通常会有自己的领地,并竭力维护使其不受侵犯,而且,尽管它们是社会性的动物,但过度的密集拥挤也会带来生存压力,尤其是在它们没有躲藏空间的时候。过度拥挤会导致争斗,因而可能会受伤,比如失去脚趾或尾巴,以及失去食欲。
鬃蜥的头呈三角状,下巴上伸出许许多多的尖头。这些尖头就像胡须一样,也算得名副其实了。这些鬃须长在边上。它们打开大嘴的时候,就会露出尖尖的鬃须,以此来吓唬其他食肉动物以及其他鬃蜥。它们还会伸展身体,使自己看起来更大些。鬃蜥作为宠物,如果主人性格温和,它的栖息地比较舒适,那么,它就不会展示自己的鬃须。
尽管鬃蜥产自澳大利亚,但是,是美国商人从欧洲进口鬃蜥后,进行大量繁殖,然后销售世界各地。原因是澳大利亚对于野生动物有严格的出口法规。
飞蜥是飞龙科蜥蜴的另一个变种。它的个头稍小于12英寸,身体长长的,细细的,肋骨处有副翼。雄性飞蜥会占有两三棵树作为它的领土,每棵树上,生活着1~3个雌性蜥蜴。为了移动位置,它会从一棵树上,或者是高高的位置,像翅膀一样展开副翼,进行滑翔。然而,在刮风下雨的时候,它不会飞翔。在受到威胁的时候,飞蜥会展开翅膀,这样会显得更强大。
飞龙科蜥蜴还有一个有趣的种类,就是红头鬣蜥(彩虹飞蜥),它们生活在非洲的撒哈拉沙漠。它们群居生活,每个群体有10~20个蜥蜴,年长的雄性蜥蜴是它们的“首领”。夜深人静的时候,它们的身体会变成深棕色;拂晓时分,身体变成浅蓝色,头和尾巴变成浅橙色。它们的皮肤颜色会随心情而变化,可以通过颜色,知道它们的情绪。比如说,雄性蜥蜴争斗的时候,他们的头会变为棕色,身上布满白色斑点。