书籍详情

SQL进阶教程(第2版)

SQL进阶教程(第2版)

作者:[日]MICK

出版社:人民邮电出版社

出版时间:2023-02-01

ISBN:9787115609762

定价:¥89.80

购买这本书可以去
内容简介
  本书是热销书《SQL基础教程》的作者MICK为志在向中级进阶的数据库工程师编写的一本SQL技能提升指南。全书可分为两大部分。第一部分介绍了SQL语言不同寻常的使用技巧,带领读者重新认识CASE表达式、窗口函数、自连接、EXISTS谓词、HAVING子句、外连接、行间比较、集合运算、数列处理等SQL常用技术,发掘它们的新用法。这部分不仅穿插讲解了这些技巧背后的逻辑和相关知识,而且辅以丰富的示例程序,旨在帮助读者从面向过程的思维方式转换为面向集合的思维方式。第二部分介绍了关系数据库的发展史,并从集合论和逻辑学的角度讲述了SQL和关系模型的理论基础,旨在帮助读者加深对SQL语言和关系数据库的理解。此外,本书很多节的末尾设置有练习题,并在书末提供了解答,方便读者检验自己对书中知识点的掌握程度。
作者简介
  MICK(作者)日本资历深厚的数据库工程师,就职于某系统集成商,致力于数据仓库和商业智能的开发。日常除了在其个人主页“关系数据库的世界”中分享数据库和SQL的相关技术信息外,还为翔泳社的网络媒体CodeZine和日本IT技术杂志WEB+DB PRESS撰写技术文章,同时还是《SQL解惑(第2版)》和《SQL权威指南(第4版)》日文版的译者吴炎昌(译者)毕业于西北工业大学软件工程专业。曾供职于日本多家软件公司,从事系统开发工作。2015年回国后加入美团点评,现任系统研发工程师。爱好旅行、电影,以及品尝各种美食,有一位志趣相投的伴侣。侯振龙(译者)管理科学与工程专业硕士,日语一级,软件开发工程师,具有十年以上对日软件开发经验,现就职于某日本独资企业。
目录
第 1章 神奇的SQL 1

1-1 CASE表达式 2
在SQL里表达条件分支
写在前面 2
CASE表达式的写法 2
将已有编号方式转换为新的方式并统计 4
用一条SQL语句进行多条件统计 7
用CHECK约束定义多个列的条件关系 11
在UPDATE语句里进行条件分支 12
表之间的数据匹配 15
在CASE表达式中使用聚合函数 17
本节小结 20
练习题 22

1-2 必知必会的窗口函数 25
顺序编程的复活
什么是窗口 26
一张图看懂窗口函数 27
使用帧子句将其他行移至当前行 29
窗口函数的内部动作 34
本节小结 37
练习题 39

1-3 自连接的用法 41
从物理到逻辑的跳跃
可重排列、排列、组合 41
删除重复行 45
查找局部不一致的列 48
本节小结 50
练习题 55

1-4 三值逻辑和NULL 56
SQL的温柔陷阱
写在前面 56
理论篇 57
实践篇 61
本节小结 71
练习题 78

1-5 EXISTS 谓词的用法 79
SQL中的谓词逻辑
写在前面 79
理论篇 79
实践篇 85
本节小结 95
练习题 96

1-6 HAVING 子句的力量 99
将世界看作集合
寻找缺失的编号 99
用HAVING 子句进行子查询:求众数 105
查询不包含NULL 的集合 107
特征函数的应用 110
使用HAVING 语句表达全称量化 113
单重集合与多重集合 116
用关系除法运算进行购物篮分析 120
本节小结 123
练习题 128

1-7 用窗口函数进行行间比较 130
告别关联子查询
写在前面 130
增加、减少、没有变化 130
时间轴有间断时:和过去最临近的时间进行比较 135
窗口函数与关联子查询 137
查询重叠的时间区间 140
本节小结 145
练习题 145

1-8 外连接的用法 147
SQL的弱点及其趋势和对策
写在前面 147
用外连接进行行列转换(1)(行→列):制作交叉表 147
用外连接进行行列转换(2)(列→行):汇总重复项于一列 151
在交叉表里制作嵌套式表侧栏 153
作为乘法运算的连接 158
全外连接 160
用外连接进行集合运算 163
用外连接求差集:A - B 163
用外连接求差集:B - A 164
用全外连接求异或集 165
本节小结 166
练习题 168

1-9 用SQL 进行集合运算 170
SQL和集合论
写在前面 170
导入篇:集合运算的几个注意事项 170
比较表和表:检查集合相等性之基础篇 172
比较表和表:检查集合相等性之进阶篇 175
用差集实现关系除法运算 177
寻找相等的子集 180
用于删除重复行的高效SQL 183
本节小结 185
练习题 187

1-10 用SQL 处理数列 188
用SQL 处理有序数据——集大成
写在前面 188
生成连续编号 188
求全部的缺失编号 192
3 个人能坐得下吗 194
有换排的数列 197
单调递增和单调递减 199
本节小结 202
练习题 204

1-11 让SQL 飞起来 205
简单的SQL性能优化
写在前面 205
使用高效的查询 205
避免排序 208
真的用到索引了吗 213
减少中间表 216
本节小结 218

1-12 SQL 编程方法 220
确立SQL 的编程风格
写在前面 220
表的设计 222
编程的方针 223
SQL 编程方法 230
本节小结 234

第 2章 关系数据库的世界 237

2-1 关系数据库的近现代史 238
数据库有过两次破坏性创新吗
关系数据库的历史 238
破坏性创新会重复吗 243
NoSQL 的类型和解决方案 245
性能问题的解决方案 245
本节小结 247

2-2 为什么叫“关系”模型 250
为什么不叫“表”模型
关系的定义 250
定义域的忧虑 253
关系值和关系变量 254
存在“关系的关系”吗 255

2-3 开始于关系,结束于关系 257
关于封闭世界的幸福
从运算角度审视集合 257
实践和原理 259

2-4 地址:巨大的怪物 261
为什么关系数据库里没有指针
写在前面 261
关系模型是为摆脱地址而生的 262
编程中泛滥的地址 263
不曾远去的老将——约翰·巴克斯的梦想 265

2-5 关于顺序的冒险 266
SQL的中心法则
迟来的主角 266
行应该有顺序吗 267

2-6 GROUP BY 和PARTITION BY 271
物以“类”聚
二者的区别 271

2-7 从面向过程思维向声明式思维、面向集合思维转变的7个关键点 276
画圆
写在前面 276
1. 用CASE 表达式代替IF 语句和CASE 语句。SQL 更像一种函数式语言 277
2. 用GROUP BY 和窗口函数代替循环 278
3. 表中的行没有顺序 279
4. 将表看成集合 280
5. 理解EXISTS 谓词和“量化”的概念 280
6. 学习HAVING 子句的真正价值 281
7. 不要画长方形,去画圆 282

2-8 人类的逻辑学 284
浅谈逻辑学的历史
适当地抛开命题的真假吧 284
逻辑学的革命 286
人类的逻辑学 287

2-9 SQL 和递归集合 288
SQL和集合论的紧密关系
实际工作中的递归集合 288
冯·诺依曼的前辈们 288
数是什么 290
SQL 的魔术与科学 293

2-10 消灭NULL 委员会 294
全世界的数据库工程师团结起来
表明决心:告全体数据库工程师书 294
为什么NULL 如此惹人讨厌 294
并不能完全消除NULL 296
编号:使用异常编号 297
名字:使用“无名氏” 297
数值:用0 代替 298
日期:用最大值或最小值代替 298
本节小结 299
2-11 SQL 中的层级 300
严格的等级社会
谓词逻辑中的层级、集合论中的层级 300
为什么聚合后不能再引用原表中的列 300
单元素集合也是集合 304

第3章 附录 307
3-1 习题解答 308
3-2 参考文献 331
SQL 整体 331
数据库设计 332
性能 333
集合论和谓词逻辑/三值逻辑 333
后记 335
猜您喜欢

读书导航