内容简介 · · · · · ·
本书是畅销书《MySQL技术内幕:InnoDB存储引擎》的姊妹篇,深刻揭示了MySQL中SQL编程的精髓与奥秘,能为开发者和DBA们利用SQL语言解决各种与开发和管理相关的MySQL难题提供很好的指导和帮助。
全书一共10章,全面探讨了MySQL中SQL编程的各种方法、技巧与最佳实践。第1章首先介绍了SQL编程的概念、数据库的应用类型以及SQL查询分析器,然后介绍了SQL编程的三个阶段,希望读者通过本书的学习能达到最后的融合阶段。第2章全面讲解了MySQL中的各种数据类型和与之相对应的各种编程问题。第3章深入探讨了逻辑查询与物理查询的原理与方法。第4章的主题是子查询,不仅讲解了各种常用的子查询方法及其优化,而且还讲解了MariaDB对子查询的优化。第5章首先详细地分析了MySQL中的各种联接及其内部的实现算法,以及MariaDB数据库中引入的Hash...
本书是畅销书《MySQL技术内幕:InnoDB存储引擎》的姊妹篇,深刻揭示了MySQL中SQL编程的精髓与奥秘,能为开发者和DBA们利用SQL语言解决各种与开发和管理相关的MySQL难题提供很好的指导和帮助。
全书一共10章,全面探讨了MySQL中SQL编程的各种方法、技巧与最佳实践。第1章首先介绍了SQL编程的概念、数据库的应用类型以及SQL查询分析器,然后介绍了SQL编程的三个阶段,希望读者通过本书的学习能达到最后的融合阶段。第2章全面讲解了MySQL中的各种数据类型和与之相对应的各种编程问题。第3章深入探讨了逻辑查询与物理查询的原理与方法。第4章的主题是子查询,不仅讲解了各种常用的子查询方法及其优化,而且还讲解了MariaDB对子查询的优化。第5章首先详细地分析了MySQL中的各种联接及其内部的实现算法,以及MariaDB数据库中引入的Hash Join,然后针对关于集合的各种操作给出了解决方案。第6章分享了聚合和旋转操作的方法与技巧,并对一些经典的常见问题给出了解决方案。第7章深入阐述了游标的使用,重点在于如何通过正确地使用游标来提高SQL编程的效率。第8章讲解了关于事务的各种编程技巧,同时对事务的分类进行了详细阐述。第9章详细分析了各种索引的内部实现,探讨了如何使用索引来提升查询效率。第10章介绍了分区的方法与技巧,阐明了如何通过分区来进行SQL编程。
无论你是开发人员还是DBA,无论你是需要一本SQL查询手册还是希望系统深入地学习SQL编程,本书都会是不错的选择。
作者简介 · · · · · ·
姜承尧(David Jiang),资深MySQL数据库专家,MySQL开源分支版本InnoSQL(www.innomysql.org)的创始人,独立数据库咨询顾问(www.innosql.com)。不仅擅长于数据库的管理和维护,还擅长于数据库的开发,同时一直致力于MySQL数据库底层实现原理的研究和探索,对高性能数据库和数据仓库也有深刻而独到的理解。目前就职于网易研究院,担任后台技术中心技术经理一职,从事MySQL数据库底层以及云的相关的开发工作。曾领导并参与了多个大型核心数据库应用的设计、实施、管理和维护,实战经验非常丰富。活跃于开源数据库和开源软件领域,是著名开源社区ChinaUnix MySQL版块的版主,热衷于分享MySQL数据库的各种成功应用实践。
作者微博:http://weibo.com/insidemysql
本书微群:http://...
姜承尧(David Jiang),资深MySQL数据库专家,MySQL开源分支版本InnoSQL(www.innomysql.org)的创始人,独立数据库咨询顾问(www.innosql.com)。不仅擅长于数据库的管理和维护,还擅长于数据库的开发,同时一直致力于MySQL数据库底层实现原理的研究和探索,对高性能数据库和数据仓库也有深刻而独到的理解。目前就职于网易研究院,担任后台技术中心技术经理一职,从事MySQL数据库底层以及云的相关的开发工作。曾领导并参与了多个大型核心数据库应用的设计、实施、管理和维护,实战经验非常丰富。活跃于开源数据库和开源软件领域,是著名开源社区ChinaUnix MySQL版块的版主,热衷于分享MySQL数据库的各种成功应用实践。
作者微博:http://weibo.com/insidemysql
本书微群:http://q.weibo.com/943166
目录 · · · · · ·
前 言
第1章 SQL编程/1
1.1 MySQL数据库/2
1.1.1 MySQL数据库历史/2
1.1.2 MySQL数据库的分支版本/4
1.2 SQL编程/5
1.3 数据库的应用类型/7
1.3.1 OLTP/7
1.3.2 OLAP/8
1.3.3 OLTP与OLAP的比较/9
1.3.4 MySQL存储引擎及其面向的数据库应用/10
1.4 图形化的SQL查询分析器/12
1.4.1 MySQL Workbench/12
1.4.2 Toad for MySQL/12
1.4.3 iMySQL-Front/13
1.5 小结/15
第2章 数据类型/16
2.1 类型属性/17
2.1.1 UNSIGNED/17
2.1.2 ZEROFILL/20
2.2 SQL_MODE设置/21
2.3 日期和时间类型/26
2.3.1 DATETIME和 DATE/26
2.3.2 TIMESTAMP/28
2.3.3 YEAR和TIME/30
2.3.4 与日期和时间相关的函数/31
2.4 关于日期的经典SQL编程问题/34
2.4.1 生日问题/34
2.4.2 重叠问题/37
2.4.3 星期数的问题/48
2.5 数字类型/53
2.5.1 整型/53
2.5.2 浮点型(非精确类型)/54
2.5.3 高精度类型/54
2.5.4 位类型/55
2.6 关于数字的经典SQL编程问题/56
2.6.1 数字辅助表/56
2.6.2 连续范围问题/58
2.7 字符类型/60
2.7.1 字符集/60
2.7.2 排序规则/64
2.7.3 CHAR和VARCHAR/68
2.7.4 BINARY和VARBINARY/70
2.7.5 BLOB和TEXT/72
2.7.6 ENUM和SET类型/73
2.8 小结/75
第3章 查询处理/76
3.1 逻辑查询处理/77
3.1.1 执行笛卡儿积/79
3.1.2 应用ON过滤器/80
3.1.3 添加外部行/83
3.1.4 应用WHERE过滤器/84
3.1.5 分组/85
3.1.6 应用ROLLUP或CUBE/86
3.1.7 应用HAVING过滤器/86
3.1.8 处理SELECT列表/87
3.1.9 应用DISTINCT子句/87
3.1.10 应用ORDER BY子句/88
3.1.11 LIMIT子句/92
3.2 物理查询处理/93
3.3 小结/95
第4章 子查询/96
4.1 子查询概述/97
4.1.1 子查询的优点和限制/97
4.1.2 使用子查询进行比较/97
4.1.3 使用ANY、IN和SOME进行子查询/98
4.1.4 使用ALL进行子查询/99
4.2 独立子查询/99
4.3 相关子查询/105
4.4 EXISTS谓词/109
4.4.1 EXISTS /109
4.4.2 NOT EXISTS/111
4.5 派生表/113
4.6 子查询可以解决的经典问题/114
4.6.1 行号/114
4.6.2 分区/118
4.6.3 最小缺失值问题/121
4.6.4 缺失范围和连续范围/122
4.7 MariaDB对SEMI JOIN的优化/126
4.7.1 概述/126
4.7.2 Table Pullout优化/127
4.7.3 Duplicate Weedout 优化/128
4.7.4 Materialization优化/129
4.8 小结/130
第5章 联接与集合操作/132
5.1 联接查询/133
5.1.1 新旧查询语法/133
5.1.2 CROSS JOIN/134
5.1.3 INNER JOIN/137
5.1.4 OUTER JOIN/138
5.1.5 NATURAL JOIN/141
5.1.6 STRAIGHT_JOIN/141
5.2 其他联接分类/142
5.2.1 SELF JOIN/143
5.2.2 NONEQUI JOIN/144
5.2.3 SEMI JOIN和ANTI SEMI JOIN/145
5.3 多表联接/146
5.4 滑动订单问题/148
5.5 联接算法/150
5.5.1 Simple Nested-Loops Join算法/150
5.5.2 Block Nested-Loops Join算法/155
5.5.3 Batched Key Access Join算法/158
5.5.4 Classic Hash Join算法/161
5.6 集合操作/163
5.6.1 集合操作的概述/163
5.6.2 UNION DISTINCT和UNION ALL/165
5.6.3 EXCEPT/167
5.6.4 INTERSECT/170
5.7 小结/171
第6章 聚合和旋转操作/172
6.1 聚合 /173
6.1.1 聚合函数/173
6.1.2 聚合的算法/174
6.2 附加属性聚合/176
6.3 连续聚合/178
6.3.1 累积聚合/179
6.3.2 滑动聚合/183
6.3.3 年初至今聚合/184
6.4 Pivoting/185
6.4.1 开放架构/185
6.4.2 关系除法/187
6.4.3 格式化聚合数据/189
6.5 Unpivoting/191
6.6 CUBE 和 ROLLUP/193
6.6.1 ROLLUP/193
6.6.2 CUBE/196
6.7 小结/197
第7章 游标/198
7.1 面向集合与面向过程的开发/199
7.2 游标的使用/199
7.3 游标的开销/200
7.4 使用游标解决问题/202
7.4.1 游标的性能分析/202
7.4.2 连续聚合/203
7.4.3 最大会话数/206
7.5 小结/210
第8章 事务编程/211
8.1 事务概述/212
8.2 事务的分类/214
8.3 事务控制语句/219
8.4 隐式提交的SQL语句/224
8.5 事务的隔离级别/225
8.6 分布式事务编程/229
8.7 不好的事务编程习惯/234
8.7.1 在循环中提交/234
8.7.2 使用自动提交/236
8.7.3 使用自动回滚/236
8.8 长事务/239
8.9 小结/240
第9章 索引/242
9.1 缓冲池、顺序读取与随机读取/243
9.2 数据结构与算法/246
9.2.1 二分查找法/246
9.2.2 二叉查找树和平衡二叉树/247
9.3 B+树/249
9.3.1 B+树的插入操作/250
9.3.2 B+树的删除操作/252
9.4 B+树索引/253
9.4.1 InnoDB B+树索引/254
9.4.2 MyISAM B+树索引/256
9.5 Cardinality/256
9.5.1 什么是Cardinality/256
9.5.2 InnoDB存储引擎怎样统计Cardinality/257
9.6 B+树索引的使用/259
9.6.1 不同应用中B+树索引的使用/259
9.6.2 联合索引/260
9.6.3 覆盖索引/262
9.6.4 优化器选择不使用索引的情况/263
9.6.5 INDEX HINT/265
9.7 Multi-Range Read/267
9.8 Index Condition Pushdown/269
9.9 T树索引/271
9.9.1 T树概述/271
9.9.2 T树的查找、插入和删除操作/272
9.9.3 T树的旋转/273
9.10 哈希索引/276
9.10.1 散列表/276
9.10.2 InnoDB存储引擎中的散列算法/278
9.10.3 自适应哈希索引/278
9.11 小结/279
第10章 分区/280
10.1 分区概述/281
10.2 分区类型/283
10.2.1 RANGE分区/283
10.2.2 LIST分区/289
10.2.3 HASH分区/291
10.2.4 KEY分区/293
10.2.5 COLUMNS分区/293
10.3 子分区/295
10.4 分区中的NULL值/298
10.5 分区和性能/301
10.6 在表和分区间交换数据/305
10.7 小结/307
· · · · · · (收起)
丛书信息
· · · · · ·
喜欢读"MySQL技术内幕"的人也喜欢的电子书 · · · · · ·
喜欢读"MySQL技术内幕"的人也喜欢 · · · · · ·
- 深入理解MySQL核心技术 6.7
- Shell脚本专家指南 7.9
- 自己动手设计数据库 7.4
- Redis入门指南 7.7
- 高可用MySQL 7.7
- SQL反模式 8.4
- 深入浅出MySQL 7.7
- 高性能MySQL(第二版) 8.7
MySQL技术内幕的书评 · · · · · · ( 全部 22 条 )
适合mysql初学者
非常好的一本关于mysql,innodb具体实现的书
> 更多书评 22篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部3 )
-
机械工业出版社 (2013)8.3分 752人读过
-
机械工业出版社 (2010)8.1分 298人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 杨福川策划的图书 (出版人杨福川)
- MySQL书籍 (kicool)
- 数据库 (华章数媒)
- 从数据库开发的角度评价几本MySQL图书 (左其盛)
- 华章-数据库与数据挖掘 (何艳)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于MySQL技术内幕的评论:
feed: rss 2.0
0 有用 顾白 2015-01-04 13:19:39
对开发人员有指导意义。
0 有用 参草 2017-12-06 17:02:25
三星半吧。。。
0 有用 achowes 2020-04-07 23:22:37
对于小白来说是很好的应用指南。提到了一些技术适用的范围,并没有过多深入介绍,这样对于理解有益。想要深入了解数据库的运行原理,乃至自己实现一个简单的数据库,要去看《InnoDB存储引擎》和《深入理解MySQL》了。
0 有用 愤怒的老伙计 2019-08-05 22:31:28
收获很多,蛮好。很接地气
0 有用 _Sir 2019-11-06 10:38:17
内容在入门到进阶之间,属于基础能力巩固。内容还好,覆盖面也可以。
0 有用 FDL 2023-05-21 22:09:25 山东
粗浅地看了看,兴许是书籍参考的mysql源码版本过老,感觉很多函数以及sql语句在今天都用不上了。书的面向受众很尴尬,于sql小白来说又涉及了原理,于想要了解innodb引擎的人来说又太过于浅显。还是直接看innodb存储引擎即可。
0 有用 H.void 2021-12-16 14:24:56
给给我补基础了
0 有用 ontheway 2020-11-25 12:55:27
好书 索性和锁讲的比较清楚
0 有用 PP 2020-04-20 13:56:25
本书在从实操的角度讲解mysql。最大的收获是在一定程度上知道了存储引擎在查询数据时是如何实际操作的。但是本书在很多点上讲的比较潦草,不过在结合看《高性能MySQL》的基础上还是有很大帮助。
0 有用 achowes 2020-04-07 23:22:37
对于小白来说是很好的应用指南。提到了一些技术适用的范围,并没有过多深入介绍,这样对于理解有益。想要深入了解数据库的运行原理,乃至自己实现一个简单的数据库,要去看《InnoDB存储引擎》和《深入理解MySQL》了。