| 作者 |
| (法)约翰·L.维卡斯(John L. Viescas) (加)道格拉斯· J. 斯蒂尔(Douglas J. Steele) (美)本· G. 克洛西尔(Ben G. Clothier) |
| 丛书名 |
| Effective系列丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111600664 |
| 简要 |
| 通过通俗易懂的语言、大量的示例展示利用SQL解决现实中的问题来传授编写高质量查询语句的方法,示例囊括市面上的多种主流数据库产品 |
| 简介 |
| 内容简介书籍计算机书籍 本书结合最佳实践与实际案例,整合了实用的解决方案与洞见,可帮助大家解决复杂的问题,设计出能简化数据管理的数据库。作者拥有世界顶级数据库顾问与讲师的丰富经验,在本书中归纳了编写高质量SQL的61个具体方法,并提供不同SQL版本的差异详情,无论你是使用何种SQL版本都能从中获益。书中提供了大量清晰、务实的解释,专家的建议与大量实用的代码。除了语法之外,还会讨论数据库设计的最佳实践、层次结构管理与元数据等议题。若你对SQL已经有基本的认识,这本图书将能帮助你成为解决SQL问题的专家。涵盖各种SQL版本:IBM DB2、Microsoft Access、Microsoft SQL Server、MySQL、Oracle Database与PostgreSQL。 |
| 目录 |
| 本书赞誉 译者序 序 前言 致谢 关于作者 关于技术编辑 第1章 数据模型设计1 第1条:确保所有表都有主键1 第2条:避免存储冗余数据4 第3条:消除重复数据组7 第4条:每列只存储一个属性9 第5条:理解为什么存储计算列通常有害无益13 第6条:定义外键以确保引用完整性16 第7条:确保表间关系的合理性19 第8条:当第三范式不够时,采用更多范式22 第9条:非规范化数据仓库27 第2章 可编程性与索引设计30 第10条:创建索引时空值的影响30 第11条:创建索引时谨慎考虑以最小化索引和数据扫描35 第12条:索引不只是过滤37 第13条:不要过度使用触发器41 第14条:使用过滤索引包含或排除数据子集45 第15条:使用声明式约束替代编码校验47 第16条:了解数据库使用的SQL方言并编写相应的代码48 第17条:了解何时在索引中使用计算结果51 第3章 当你不能改变设计时55 第18条:使用视图来简化不能更改的内容55 第19条:使用ETL将非关系数据转换为有用的信息60 第20条:创建汇总表并维护64 第21条:使用UNION语句将非规范化数据列转行66 第4章 过滤与查找数据72 第22条:了解关系代数及其如何在SQL中实现72 第23条:查找不匹配或缺失的记录78 第24条:了解何时使用CASE解决问题79 第25条:了解解决多条件查询的技术83 第26条:如需完美匹配,先对数据进行除操作88 第27条:如何按时间范围正确地过滤日期和时间的列91 第28条:书写可参数化搜索的查询以确保引擎使用索引94 第29条:正确地定义“左”连接的“右”侧97 第5章 聚合100 第30条:理解GROUP BY的工作原理100 第31条:简化GROUP BY子句106 第32条:利用GROUP BY或HAVING解决复杂的问题109 第33条:避免使用GROUP BY来查找最大值或最小值113 第34条:使用OUTER JOIN时避免获取错误的COUNT()117 第35条:测试HAVING COUNT(x) <某数时包含零值记录121 第36条:使用DISTINCT获取不重复的计数123 第37条:知道如何使用窗口函数126 第38条:创建行号与排名129 第39条:创建可移动聚合函数131 第6章 子查询136 第40条:了解在何处使用子查询136 第41条:了解关联和非关联子查询的差异140 第42条:尽可能使用公共表表达式而不是子查询145 第43条:使用连接而非子查询创建更高效的查询151 第7章 获取与分析元数据154 第44条:了解如何使用系统的查询分析器154 第45条:学习获取数据库的元数据164 第46条:理解执行计划的工作原理168 第8章 笛卡儿积175 第47条:生成两张表所有行的组合并标示一张表中间接关联另一张表的列175 第48条:理解如何以等分量排名177 第49条:知道如何对表中的行配对181 第50条:理解如何列出类别与前三偏好185 第9章 计数表189 第51条:根据计数表内定义的参数生成空行189 第52条:使用计数表和窗口函数生成序列193 第53条:根据计数表内定义的范围生成行196 第54条:根据计数表定义的值范围转换某个表中的值199 第55条:使用日期表简化日期计算205 第56条:创建在某个范围内所有日期的日程表209 第57条:使用计数表行转列212 第10章 层次数据建模217 第58条:从邻接列表模型开始218 第59条:对不常更新的数据使用嵌套集以提升查询性能220 第60条:使用存储路径简化设置与搜索222 第61条:使用祖先遍历闭包做复杂搜索224 附录 日期与时间类型、运算符和函数228 |