mysql sql技术_MySQL技术内幕:SQL编程

《MySQL技术内幕:SQL编程》是畅销书《MySQL技术内幕:InnoDB存储引擎》的姊妹篇,深刻揭示了MySQL中SQL编程的精髓与奥秘,能为开发者和DBA们利用SQL语言解决各种与开发和管理相关的MySQL难题提供很好的指导和帮助。

《MySQL技术内幕:SQL编程》一共10章,全面探讨了MySQL中SQL编程的各种方法、技巧与最佳实践。第1章首先介绍了SQL编程的概念、数据库的应用类型以及SQL查询分析器,然后介绍了SQL编程的三个阶段,希望读者通过本书的学习能达到最后的融合阶段。第2章全面讲解了MySQL中的各种数据类型和与之相对应的各种编程问题。第3章深入探讨了逻辑查询与物理查询的原理与方法。第4章的主题是子查询,不仅讲解了各种常用的子查询方法及其优化,而且还讲解了MariaDB对子查询的优化。第5章首先详细地分析了MySQL中的各种联接及其内部的实现算法,以及MariaDB数据库中引入的HashJoin,然后针对关于集合的各种操作给出了解决方案。第6章分享了聚合和旋转操作的方法与技巧,并对一些经典的常见问题给出了解决方案。第7章深入阐述了游标的使用,重点在于如何通过正确地使用游标来提高SQL编程的效率。第8章讲解了关于事务的各种编程技巧,同时对事务的分类进行了详细阐述。第9章详细分析了各种索引的内部实现,探讨了如何使用索引来提升查询效率。第10章介绍了分区的方法与技巧,阐明了如何通过分区来进行SQL编程。

无论你是开发人员还是DBA,无论你是需要一本SQL查询手册还是希望系统深入地学习SQL编程,本书都会是不错的选择。

姜承尧(DavidJiang),资深MySQL数据库专家,MySQL开源分支版本InnoSQL的创始人,独立数据库咨询顾问。不仅擅长于数据库的管理和维护,还擅长于数据库的开发,同时一直致力于MySQL数据库底层实现原理的研究和探索,对高性能数据库和数据仓库也有深刻而独到的理解。目前就职于网易研究院,担任后台技术中心技术经理一职,从事MySQL数据库底层以及云的相关的开发工作。曾领导并参与了多个大型核心数据库应用的设计、实施、管理和维护,实战经验非常丰富。活跃于开源数据库和开源软件领域,是著名开源社区ChinaUnixMySQL版块的版主,热衷于分享MySQL数据库的各种成功应用实践。

前言

第1章 SQL编程

1.1 MySQL数据库

1.1.1 MySQL数据库历史

1.1.2 MySQL数据库的分支版本

1.2 SQL编程

1.3 数据库的应用类型

1.3.1 OLTP

1.3.2 OLAP

1.3.3 OLTP与OLAP的比较

1.3.4 MySQL存储引擎及其面向的数据库应用

1.4 图形化的SQL查询分析器

1.4.1 MySQL Workbench

1.4.2 Toad for MySQL

1.4.3 iMySQL-Front

1.5 小结

第2章 数据类型

2.1 类型属性

2.1.1 UNSIGNED

2.1.2 ZEROFILL

2.2 SQL_MODE设置

2.3 日期和时间类型

2.3.1 DATETIME和 DATE

2.3.2 TIMESTAMP

2.3.3 YEAR和TIME

2.3.4 与日期和时间相关的函数1

2.4 关于日期的经典SQL编程问题

2.4.1 生日问题

2.4.2 重叠问题

2.4.3 星期数的问题

2.5 数字类型

2.5.1 整型

2.5.2 浮点型(非精确类型)

2.5.3 高精度类型

2.5.4 位类型

2.6 关于数字的经典SQL编程问题

2.6.1 数字辅助表

2.6.2 连续范围问题

2.7 字符类型

2.7.1 字符集

2.7.2 排序规则

2.7.3 CHAR和VARCHAR

2.7.4 BINARY和VARBINARY

2.7.5 BLOB和TEXT

2.7.6 ENUM和SET类型

2.8 小结

第3章 查询处理

3.1 逻辑查询处理

3.1.1 执行笛卡儿积

3.1.2 应用ON过滤器

3.1.3 添加外部行

3.1.4 应用WHERE过滤器

3.1.5 分组

3.1.6 应用ROLLUP或CUBE

3.1.7 应用HAVING过滤器

3.1.8 处理SELECT列表

3.1.9 应用DISTINCT子句

3.1.10 应用ORDER BY子句

3.1.11 LIMIT子句

3.2 物理查询处理

3.3 小结

第4章 子查询

4.1 子查询概述

4.1.1 子查询的优点和限制

4.1.2 使用子查询进行比较

4.1.3 使用ANY、IN和SOME进行子查询

4.1.4 使用ALL进行子查询

4.2 独立子查询

4.3 相关子查询

4.4 EXISTS谓词

4.4.1 EXISTS

4.4.2 NOT EXISTS

4.5 派生表

4.6 子查询可以解决的经典问题

4.6.1 行号

4.6.2 分区

4.6.3 最小缺失值问题

4.6.4 缺失范围和连续范围

4.7 MariaDB对SEMI JOIN的优化

4.7.1 概述

4.7.2 Table Pullout优化

4.7.3 Duplicate Weedout 优化

4.7.4 Materialization优化

4.8 小结

第5章 联接与集合操作

5.1 联接查询

5.1.1 新旧查询语法

5.1.2 CROSS JOIN

5.1.3 INNER JOIN

5.1.4 OUTER JOIN

5.1.5 NATURAL JOIN

5.1.6 STRAIGHT_JOIN

5.2 其他联接分类

5.2.1 SELF JOIN

5.2.2 NONEQUI JOIN

5.2.3 SEMI JOIN和ANTI SEMI JOIN

5.3 多表联接

5.4 滑动订单问题

5.5 联接算法

5.5.1 Simple Nested-Loops Join算法

5.5.2 Block Nested-Loops Join算法

5.5.3 Batched Key Access Join算法

5.5.4 Classic Hash Join算法

5.6 集合操作

5.6.1 集合操作的概述

5.6.2 UNION DISTINCT和UNION ALL

5.6.3 EXCEPT

5.6.4 INTERSECT

5.7 小结

第6章 聚合和旋转操作

6.1 聚合

6.1.1 聚合函数

6.1.2 聚合的算法

6.2 附加属性聚合

6.3 连续聚合

6.3.1 累积聚合

6.3.2 滑动聚合

6.3.3 年初至今聚合

6.4 Pivoting

6.4.1 开放架构

6.4.2 关系除法

6.4.3 格式化聚合数据

6.5 Unpivoting

6.6 CUBE 和 ROLLUP

6.6.1 ROLLUP

6.6.2 CUBE

6.7 小结

第7章 游标

7.1 面向集合与面向过程的开发

7.2 游标的使用

7.3 游标的开销

7.4 使用游标解决问题

7.4.1 游标的性能分析

7.4.2 连续聚合

7.4.3 最大会话数

7.5 小结

第8章 事务编程

8.1 事务概述

8.2 事务的分类

8.3 事务控制语句

8.4 隐式提交的SQL语句

8.5 事务的隔离级别

8.6 分布式事务编程

8.7 不好的事务编程习惯

8.7.1 在循环中提交

8.7.2 使用自动提交

8.7.3 使用自动回滚

8.8 长事务

8.9 小结

第9章 索引

9.1 缓冲池、顺序读取与随机读取

9.2 数据结构与算法

9.2.1 二分查找法

9.2.2 二叉查找树和平衡二叉树

9.3 B+树

9.3.1 B+树的插入操作

9.3.2 B+树的删除操作

9.4 B+树索引

9.4.1 InnoDB B+树索引

9.4.2 MyISAM B+树索引

9.5 Cardinality

9.5.1 什么是Cardinality

9.5.2 InnoDB存储引擎怎样统计Cardinality

9.6 B+树索引的使用

9.6.1 不同应用中B+树索引的使用

9.6.2 联合索引

9.6.3 覆盖索引

9.6.4 优化器选择不使用索引的情况

9.6.5 INDEX HINT

9.7 Multi-Range Read

9.8 Index Condition Pushdown

9.9 T树索引

9.9.1 T树概述

9.9.2 T树的查找、插入和删除操作

9.9.3 T树的旋转

9.10 哈希索引

9.10.1 散列表

9.10.2 InnoDB存储引擎中的散列算法

9.10.3 自适应哈希索引

9.11 小结

第10章 分区

10.1 分区概述

10.2 分区类型

10.2.1 RANGE分区

10.2.2 LIST分区

10.2.3 HASH分区

10.2.4 KEY分区

10.2.5 COLUMNS分区

10.3 子分区

10.4 分区中的NULL值

10.5 分区和性能

10.6 在表和分区间交换数据

10.7 小结

内容简介:

《MySQL技术内幕:SQL编程》是畅销书《MySQL技术内幕:InnoDB存储引擎》的姊妹篇,深刻揭示了MySQL中SQL编程的精髓与奥秘,能为开发者和DBA们利用SQL语言解决各种与开发和管理相关的MySQL难题提供很好的指导和帮助。

《MySQL技术内幕:SQL编程》一共10章,全面探讨了MySQL中SQL编程的各种方法、技巧与最佳实践。第1章首先介绍了SQL编程的概念、数据库的应用类型以及SQL查询分析器,然后介绍了SQL编程的三个阶段,希望读者通过本书的学习能达到最后的融合阶段。第2章全面讲解了MySQL中的各种数据类型和与之相对应的各种编程问题。第3章深入探讨了逻辑查询与物理查询的原理与方法。第4章的主题是子查询,不仅讲解了各种常用的子查询方法及其优化,而且还讲解了MariaDB对子查询的优化。第5章首先详细地分析了MySQL中的各种联接及其内部的实现算法,以及MariaDB数据库中引入的HashJoin,然后针对关于集合的各种操作给出了解决方案。第6章分享了聚合和旋转操作的方法与技巧,并对一些经典的常见问题给出了解决方案。第7章深入阐述了游标的使用,重点在于如何通过正确地使用游标来提高SQL编程的效率。第8章讲解了关于事务的各种编程技巧,同时对事务的分类进行了详细阐述。第9章详细分析了各种索引的内部实现,探讨了如何使用索引来提升查询效率。第10章介绍了分区的方法与技巧,阐明了如何通过分区来进行SQL编程。

无论你是开发人员还是DBA,无论你是需要一本SQL查询手册还是希望系统深入地学习SQL编程,本书都会是不错的选择。

作者简介:

姜承尧(DavidJiang),资深MySQL数据库专家,MySQL开源分支版本InnoSQL的创始人,独立数据库咨询顾问。不仅擅长于数据库的管理和维护,还擅长于数据库的开发,同时一直致力于MySQL数据库底层实现原理的研究和探索,对高性能数据库和数据仓库也有深刻而独到的理解。目前就职于网易研究院,担任后台技术中心技术经理一职,从事MySQL数据库底层以及云的相关的开发工作。曾领导并参与了多个大型核心数据库应用的设计、实施、管理和维护,实战经验非常丰富。活跃于开源数据库和开源软件领域,是著名开源社区ChinaUnixMySQL版块的版主,热衷于分享MySQL数据库的各种成功应用实践。

目录:

前言

第1章 SQL编程

1.1 MySQL数据库

1.1.1 MySQL数据库历史

1.1.2 MySQL数据库的分支版本

1.2 SQL编程

1.3 数据库的应用类型

1.3.1 OLTP

1.3.2 OLAP

1.3.3 OLTP与OLAP的比较

1.3.4 MySQL存储引擎及其面向的数据库应用

1.4 图形化的SQL查询分析器

1.4.1 MySQL Workbench

1.4.2 Toad for MySQL

1.4.3 iMySQL-Front

1.5 小结

第2章 数据类型

2.1 类型属性

2.1.1 UNSIGNED

2.1.2 ZEROFILL

2.2 SQL_MODE设置

2.3 日期和时间类型

2.3.1 DATETIME和 DATE

2.3.2 TIMESTAMP

2.3.3 YEAR和TIME

2.3.4 与日期和时间相关的函数1

2.4 关于日期的经典SQL编程问题

2.4.1 生日问题

2.4.2 重叠问题

2.4.3 星期数的问题

2.5 数字类型

2.5.1 整型

2.5.2 浮点型(非精确类型)

2.5.3 高精度类型

2.5.4 位类型

2.6 关于数字的经典SQL编程问题

2.6.1 数字辅助表

2.6.2 连续范围问题

2.7 字符类型

2.7.1 字符集

2.7.2 排序规则

2.7.3 CHAR和VARCHAR

2.7.4 BINARY和VARBINARY

2.7.5 BLOB和TEXT

2.7.6 ENUM和SET类型

2.8 小结

第3章 查询处理

3.1 逻辑查询处理

3.1.1 执行笛卡儿积

3.1.2 应用ON过滤器

3.1.3 添加外部行

3.1.4 应用WHERE过滤器

3.1.5 分组

3.1.6 应用ROLLUP或CUBE

3.1.7 应用HAVING过滤器

3.1.8 处理SELECT列表

3.1.9 应用DISTINCT子句

3.1.10 应用ORDER BY子句

3.1.11 LIMIT子句

3.2 物理查询处理

3.3 小结

第4章 子查询

4.1 子查询概述

4.1.1 子查询的优点和限制

4.1.2 使用子查询进行比较

4.1.3 使用ANY、IN和SOME进行子查询

4.1.4 使用ALL进行子查询

4.2 独立子查询

4.3 相关子查询

4.4 EXISTS谓词

4.4.1 EXISTS

4.4.2 NOT EXISTS

4.5 派生表

4.6 子查询可以解决的经典问题

4.6.1 行号

4.6.2 分区

4.6.3 最小缺失值问题

4.6.4 缺失范围和连续范围

4.7 MariaDB对SEMI JOIN的优化

4.7.1 概述

4.7.2 Table Pullout优化

4.7.3 Duplicate Weedout 优化

4.7.4 Materialization优化

4.8 小结

第5章 联接与集合操作

5.1 联接查询

5.1.1 新旧查询语法

5.1.2 CROSS JOIN

5.1.3 INNER JOIN

5.1.4 OUTER JOIN

5.1.5 NATURAL JOIN

5.1.6 STRAIGHT_JOIN

5.2 其他联接分类

5.2.1 SELF JOIN

5.2.2 NONEQUI JOIN

5.2.3 SEMI JOIN和ANTI SEMI JOIN

5.3 多表联接

5.4 滑动订单问题

5.5 联接算法

5.5.1 Simple Nested-Loops Join算法

5.5.2 Block Nested-Loops Join算法

5.5.3 Batched Key Access Join算法

5.5.4 Classic Hash Join算法

5.6 集合操作

5.6.1 集合操作的概述

5.6.2 UNION DISTINCT和UNION ALL

5.6.3 EXCEPT

5.6.4 INTERSECT

5.7 小结

第6章 聚合和旋转操作

6.1 聚合

6.1.1 聚合函数

6.1.2 聚合的算法

6.2 附加属性聚合

6.3 连续聚合

6.3.1 累积聚合

6.3.2 滑动聚合

6.3.3 年初至今聚合

6.4 Pivoting

6.4.1 开放架构

6.4.2 关系除法

6.4.3 格式化聚合数据

6.5 Unpivoting

6.6 CUBE 和 ROLLUP

6.6.1 ROLLUP

6.6.2 CUBE

6.7 小结

第7章 游标

7.1 面向集合与面向过程的开发

7.2 游标的使用

7.3 游标的开销

7.4 使用游标解决问题

7.4.1 游标的性能分析

7.4.2 连续聚合

7.4.3 最大会话数

7.5 小结

第8章 事务编程

8.1 事务概述

8.2 事务的分类

8.3 事务控制语句

8.4 隐式提交的SQL语句

8.5 事务的隔离级别

8.6 分布式事务编程

8.7 不好的事务编程习惯

8.7.1 在循环中提交

8.7.2 使用自动提交

8.7.3 使用自动回滚

8.8 长事务

8.9 小结

第9章 索引

9.1 缓冲池、顺序读取与随机读取

9.2 数据结构与算法

9.2.1 二分查找法

9.2.2 二叉查找树和平衡二叉树

9.3 B+树

9.3.1 B+树的插入操作

9.3.2 B+树的删除操作

9.4 B+树索引

9.4.1 InnoDB B+树索引

9.4.2 MyISAM B+树索引

9.5 Cardinality

9.5.1 什么是Cardinality

9.5.2 InnoDB存储引擎怎样统计Cardinality

9.6 B+树索引的使用

9.6.1 不同应用中B+树索引的使用

9.6.2 联合索引

9.6.3 覆盖索引

9.6.4 优化器选择不使用索引的情况

9.6.5 INDEX HINT

9.7 Multi-Range Read

9.8 Index Condition Pushdown

9.9 T树索引

9.9.1 T树概述

9.9.2 T树的查找、插入和删除操作

9.9.3 T树的旋转

9.10 哈希索引

9.10.1 散列表

9.10.2 InnoDB存储引擎中的散列算法

9.10.3 自适应哈希索引

9.11 小结

第10章 分区

10.1 分区概述

10.2 分区类型

10.2.1 RANGE分区

10.2.2 LIST分区

10.2.3 HASH分区

10.2.4 KEY分区

10.2.5 COLUMNS分区

10.3 子分区

10.4 分区中的NULL值

10.5 分区和性能

10.6 在表和分区间交换数据

10.7 小结

你可能感兴趣的:(mysql,sql技术)