SQL进阶教程(第2版)

SQL进阶教程(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [日]
2023-02
版次: 2
ISBN: 9787115609762
定价: 89.80
装帧: 平装
开本: 其他
纸张: 胶版纸
页数: 336页
字数: 455千字
6人买过
  • 本书是热销书《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
  • 内容简介:
    本书是热销书《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
查看详情
相关图书 / 更多
SQL进阶教程(第2版)
SQL从入门到进阶
陈红波 编著
SQL进阶教程(第2版)
SQL Server数据库实用案例教程(第2版·微课视频版)
王雪梅 李海晨 主编;马亚丽 华进 蔡斌杰 副主编
SQL进阶教程(第2版)
SQLServer2019数据库管理项目教程(活页式高等职业教育计算机专业活页式系列教材)
黄小花、黄侃、熊慧芳 编
SQL进阶教程(第2版)
SQL面试宝典:图解数据库求职题(全彩)
猴子
SQL进阶教程(第2版)
SQL Server数据库设计与应用(第2版)
张成叔
SQL进阶教程(第2版)
SQL Server数据库应用入门(项目式+微课版)
李武韬 文瑛 吴超
SQL进阶教程(第2版)
SQL Server实例教程(2019版)
刘志成
SQL进阶教程(第2版)
SQL实践教程(第10版)
[美]马克·谢尔曼(Mark Shellman)哈桑·阿夫尤尼(Hassan A
SQL进阶教程(第2版)
SQL Server 2014数据库原理与实训教程
吴小刚 主编;彭文惠
SQL进阶教程(第2版)
SQL语言从入门到精通
明日科技
SQL进阶教程(第2版)
SQL Server从入门到精通(第5版)
明日科技
SQL进阶教程(第2版)
SQL数据分析
[美]凯西·谷村(Cathy Tanimura)