具体描述
本书使读者不仅能够深入了解MySQL 这种主流数据库,还能全面掌握开源数据库新秀MariaDB 的使用方法。书中内容由浅至深、层层深入,从分步介绍如何安装MySQL 和MariaDB,到以虚构的观鸟网站为例,详解数据库的各种操作。具体内容包括:数据库的结构;数据的插入、选取、更新、删除、连接和子查询;字符串函数、日期和时间函数、聚合函数与数值函数等。最后一个部分从更高的角度介绍数据库的管理,内容涉及用户账号及权限、数据库的备份与恢复,以及利用应用编程接口结合C、Perl、PHP、Python、Ruby 等不同语言与数据库交互。
作者简介
作者简介:
Russell J.T. Dyer
现任MariaDB公司课程主管,同时是一位小说家。他曾在MySQL公司做过近六年的知识库编辑,拥有丰富的MySQL实践经验,另著有《MySQL核心技术手册》。作为小说家,他目前正在创作自己的第二部小说。
译者简介:
袁志鹏
2012年本科毕业,至今有半年银行业、三年半航运业软件开发经验,致力于写简洁易懂的代码。
目录信息
前言 xvii
第一部分 软件
第1章 入门 2
1.1 MySQL 和MariaDB 的价值 2
1.2 邮件列表和论坛 3
1.3 其他书籍和出版物 3
第2章 安装MySQL 和MariaDB 5
2.1 安装包 5
2.2 许可 6
2.3 获取软件 6
2.4 挑选发行 7
2.5 各种_AMP 8
2.5.1 Linux 二进制发行版 8
2.5.2 Mac OS X 发行版 9
2.5.3 Windows 发行版 12
2.5.4 FreeBSD 和Sun Solaris 发行版 13
2.5.5 源码包 15
2.6 安装后 16
2.6.1 特殊配置 17
2.6.2 给root 设置初始密码 17
2.6.3 关于密码的更多问题,以及删除匿名用户 18
2.6.4 创建用户 19
第3章 基础知识与mysql客户端 20
3.1 mysql客户端 20
3.2 连接到服务器 21
3.3 开始探索数据库 23
3.3.1 第一条SQL语句 24
3.3.2 插入和操作数据 26
3.3.3 再复杂一点 28
3.4 小结 29
3.5 习题 29
第二部分 数据库结构
第4章 创建数据库和表 32
4.1 创建数据库 32
4.2 创建表 34
4.3 插入数据 36
4.4 更深入地理解表 37
4.5 小结 40
4.6 习题 40
第5章 更改表 42
5.1 改表需谨慎 42
5.2 必修的改表技能 43
5.3 选修的改表技能 51
5.3.1 设置列的默认值 51
5.3.2 设置AUTO_INCREMENT 的值 53
5.3.3 改表和建表的另一种方法 54
5.3.4 重命名一个表 56
5.3.5 重排序一个表 57
5.4 索引 58
5.5 小结 62
5.6 习题 62
第三部分 数据处理基础
第6章 插入数据 67
6.1 语法 67
6.2 实例 68
6.2.1 鸟目表 69
6.2.2 鸟科表 70
6.2.3 鸟种表 75
6.3 其他选择 77
6.3.1 明确插入 77
6.3.2 插入其他表中的数据 77
6.3.3 题外话:设置正确的order_id 79
6.3.4 替换数据 82
6.3.5 数据插入的优先级 83
6.4 小结 85
6.5 习题 86
第7章 查询数据 88
7.1 基本查询 89
7.2 有条件地查询 89
7.3 结果排序 90
7.4 限定结果集 92
7.5 表连接 92
7.6 表达式与LIKE 94
7.7 对结果集进行计数和分组 98
7.8 小结 100
7.9 习题 100
第8章 更新和删除数据 102
8.1 更新数据 102
8.1.1 更新指定行 103
8.1.2 按行数更新 106
8.1.3 排序后再按行数更新 107
8.1.4 同时更新多个表 108
8.1.5 处理重复 109
8.2 删除数据 111
8.3 小结 113
8.4 习题 113
第9章 表连接和子查询 115
9.1 合并结果集 115
9.2 表连接 118
9.2.1 基本的表连接查询 119
9.2.2 更新已连接的表 123
9.2.3 从已连接的表中删除数据 124
9.3 子查询 125
9.3.1 标量子查询 126
9.3.2 列子查询 128
9.3.3 行子查询 129
9.3.4 表子查询 130
9.3.5 子查询的性能考虑 131
9.4 小结 131
9.5 习题 131
第四部分 内置函数
第10章 字符串函数 134
10.1 格式化字符串 135
10.1.1 拼接字符串 135
10.1.2 设置大小写和引号 137
10.1.3 修剪和补充字符串 137
10.2 抽取文本 139
10.3 搜索字符串及使用长度函数 141
10.3.1 在字符串中找出某段子串的位置 141
10.3.2 字符串长度 143
10.3.3 比较和查找字符串 144
10.3.4 在字符串中替换或插入内容 146
10.4 转换字符串类型 148
10.5 压缩字符串 150
10.6 小结 151
10.7 习题 151
第11章 日期和时间函数 153
11.1 日期和时间的数据类型 153
11.2 当前日期和时间 155
11.3 抽取日期和时间中的某部分 157
11.4 格式化日期和时间 160
11.5 调整格式标准和时区 162
11.6 日期和时间的加减 164
11.7 比较日期和时间 168
11.8 小结 171
11.9 习题 171
第12章 聚合函数和数值函数 173
12.1 聚合函数 173
12.1.1 计数 173
12.1.2 对一组数据进行运算 178
12.1.3 拼接同组的值 182
12.2 数值函数 183
12.2.1 四舍五入 183
12.2.2 上舍入或下舍入 186
12.2.3 截短数字 187
12.2.4 消除负数 187
12.3 小结 189
12.4 习题 189
第五部分 数据库管理
第13章 用户账号和权限 192
13.1 用户账号的基础知识 192
13.2 限制用户账号的访问权限 194
13.2.1 用户名和主机 194
13.2.2 SQL 权限 196
13.2.3 数据库组件和权限 198
13.3 管理员账号 202
13.3.1 用于备份的用户账号 202
13.3.2 用于恢复备份的用户账号 203
13.3.3 用于批量导入的用户账号 203
13.3.4 用于授权的用户账号 204
13.4 回收权限 205
13.5 删除用户账号 206
13.6 更改密码和用户名 207
13.6.1 给用户账号设置密码 207
13.6.2 用户账号重命名 208
13.7 用户角色 209
13.8 小结 211
13.9 习题 211
第14章 数据库的备份与恢复 213
14.1 备份 213
14.1.1 备份所有数据库 214
14.1.2 理解dump 文件 215
14.1.3 备份指定的数据库 220
14.1.4 创建备份脚本 221
14.1.5 备份指定的表 221
14.2 恢复备份 223
14.2.1 恢复数据库 223
14.2.2 恢复表 223
14.2.3 只恢复某些行或列 228
14.2.4 用二进制日志来做恢复 229
14.3 制定备份策略 234
14.4 小结 238
14.5 习题 238
第15章 批量导入数据 240
15.1 准备导入 240
15.2 导入数据的基本做法 243
15.2.1 检查警告信息 243
15.2.2 检查导入是否准确 244
15.2.3 选取导入的数据 246
15.3 更好地导入 248
15.3.1 对应域 248
15.3.2 设置列 249
15.4 其他格式的域和行 250
15.4.1 开始、结束和跳脱 250
15.4.2 替换数据或忽略错误 251
15.5 在MySQL之外导入数据 252
15.5.1 导入本地文件 253
15.5.2 使用mysqlimport 253
15.5.3 没有FILE 权限也能导入数据 254
15.6 批量导出数据 254
15.7 小结 256
15.8 习题 256
第16章 应用编程接口 258
16.1 创建API用户账号 258
16.2 C API 259
16.2.1 连接MySQL 259
16.2.2 查询MySQL 261
16.2.3 完整的最小C API程序 261
16.2.4 用GNU C编译器编译 262
16.3 Perl DBI 262
16.3.1 安装 263
16.3.2 连接MySQL 263
16.3.3 查询MySQL 263
16.3.4 Perl DBI完整示例 265
16.3.5 更多信息 267
16.4 PHP API 267
16.4.1 安装与配置 267
16.4.2 连接MySQL 268
16.4.3 查询MySQL 268
16.4.4 更多信息 271
16.5 Python 271
16.5.1 安装 271
16.5.2 连接MySQL 271
16.5.3 查询MySQL 272
16.5.4 Python程序示例 273
16.5.5 更多信息 275
16.6 Ruby API 275
16.6.1 安装和准备使用MySQL/Ruby 275
16.6.2 连接MySQL 276
16.6.3 查询MySQL 277
16.6.4 MySQL/Ruby程序示例 277
16.6.5 更多信息 281
16.7 SQL注入 281
16.8 小结 282
16.9 习题 282
关于作者 284
关于封面 284
· · · · · · (收起)
读后感
用户评价
对于任何希望在数据领域有所建树的人来说,扎实的数据库基础是不可或缺的。《MySQL与MariaDB学习指南》这本书,正是为我们提供了这样一个坚实的基石。它以一种系统而全面的方式,介绍了MySQL和MariaDB这两个备受青睐的关系型数据库系统。我特别喜欢书中关于数据库基础概念的讲解,作者用非常直观的方式解释了什么是数据库、什么是表、什么是行、什么是列,以及它们之间的关系,这对于初学者来说至关重要。SQL语言的学习部分更是详尽,从基本的CRUD操作到复杂的JOIN、子查询、分组、聚合等,作者都提供了大量的代码示例,让我能够一边阅读一边实践,从而加深理解。我对书中关于索引的讲解印象尤为深刻,作者不仅介绍了B-tree索引的工作原理,还深入分析了各种索引类型的使用场景,以及如何通过EXPLAIN命令来分析查询性能,并给出相应的优化建议。这对于我解决实际开发中遇到的性能问题提供了极大的帮助。此外,书中关于事务处理、存储引擎、备份恢复以及高可用性等方面的介绍,也让我对数据库的整体运作有了更全面的认识。这本书内容丰富,讲解清晰,是一本非常值得推荐的数据库学习书籍。
对于我这样一名对数据库技术充满好奇的初学者来说,《MySQL与MariaDB学习指南》这本书简直就是一本宝藏。它用一种非常友好的方式,将数据库这个看似庞大而复杂的系统,分解成一个个易于理解的部分。从数据库的基本概念,如表、行、列、主键、外键等,到SQL语言的入门,作者都做了非常细致的讲解,并且配有大量的代码示例,让我能够跟着书中的步骤一步一步地进行操作。我最喜欢的章节之一是关于数据模型设计的,作者讲解了如何根据业务需求来设计合理的数据库表结构,以及如何处理表之间的关系。这对于保证数据的完整性和一致性至关重要。书中的SQL进阶部分,如窗口函数、公用表表达式(CTE)和JSON函数等,也让我大开眼界,这些高级功能的运用,能够极大地提升SQL查询的灵活性和效率。我特别喜欢作者在讲解索引时,用到了非常形象的比喻,让我能够更直观地理解索引是如何工作的,以及为什么合理的索引设计能够大幅提升查询性能。这本书不仅仅是一本技术书籍,更是一本能够激发学习兴趣、培养解决问题能力的好书,它让我对数据库技术产生了浓厚的兴趣,并且更有信心去深入学习和探索。
自从我开始接触数据库领域,《MySQL与MariaDB学习指南》这本书就成了我案头的必备参考。它并非简单地罗列命令和语法,而是从更深层次的角度,阐述了数据库的设计理念和工作原理。作者在讲解SQL语句的编写时,不仅仅是教授如何查询数据,更重要的是教会我们如何写出高效、可读性强的SQL。例如,在讨论索引时,作者不仅解释了B-tree索引的结构,还深入分析了覆盖索引、组合索引以及索引失效的常见原因,并提供了相应的优化建议,这让我对SQL的优化有了全新的认识。书中的事务管理和并发控制部分,更是让我对数据库的ACID特性有了深刻的理解,作者通过生动的例子,清晰地解释了不同事务隔离级别对数据一致性的影响,以及如何在多用户环境下保证数据的可靠性。我还特别欣赏书中关于数据库架构设计和部署的章节,作者不仅介绍了主从复制、读写分离等常用的高可用方案,还对不同方案的优缺点进行了详细的分析,这为我在实际项目中选择合适的架构提供了宝贵的参考。此外,书中关于数据库安全的内容,包括用户权限管理、SQL注入防护以及数据加密等,也为我敲响了警钟,并提供了切实可行的解决方案。这本书内容翔实,讲解深入,是一本能够帮助读者真正理解和掌握MySQL与MariaDB的优秀学习指南。
作为一名需要频繁与数据库打交道的开发者,我一直在寻找一本能够帮助我深入理解MySQL和MariaDB,并且能够解决实际问题的书籍。《MySQL与MariaDB学习指南》这本书恰好满足了我的需求。作者在介绍MySQL和MariaDB的架构设计时,深入剖析了它们各自的特点和演进历史,这对于理解它们的设计哲学和潜在优势非常有帮助。在性能调优方面,书中的内容尤其让我眼前一亮。从慢查询分析、缓存机制的应用,到存储引擎的选择和优化,再到参数配置的调整,作者都给出了非常具体和可操作的建议。我尤其关注了书中关于InnoDB和MyISAM存储引擎的对比分析,以及在不同场景下如何选择合适的存储引擎,这对我之前一直混淆不清的概念有了清晰的认识。此外,书中关于数据库的备份和恢复策略,以及主从复制和读写分离的实现,书中的讲解也非常到位,提供了多种实现方案和详细的步骤。这些内容对于保证数据库的稳定运行和高可用性至关重要。我还在书中学习到了关于数据库安全的一些实践方法,包括用户权限管理、SQL注入的防范以及数据加密等,这些都是在实际项目中不可忽视的安全措施。总的来说,这本书的内容非常全面且深入,既有广度又有深度,能够帮助读者在掌握数据库基础的同时,也能在性能优化、高可用性和安全性方面得到显著提升。
在众多数据库学习资料中,《MySQL与MariaDB学习指南》这本书以其独特而深入的视角脱颖而出。它不仅仅是关于如何使用MySQL和MariaDB,更是关于理解它们背后的设计哲学和工作机制。作者在介绍SQL语法时,并没有止步于基础的CRUD操作,而是深入探讨了诸如窗口函数、公用表表达式(CTE)以及JSON数据处理等高级特性,这些功能极大地提升了SQL查询的灵活性和效率,对于处理复杂的数据分析任务非常有帮助。我尤其对书中关于数据库性能优化的部分印象深刻。作者详细讲解了如何通过慢查询日志分析来定位性能瓶颈,如何通过合理的索引设计来加速查询,以及如何根据具体业务场景选择合适的存储引擎。这些实用的技巧,直接帮助我在实际项目中解决了困扰已久的一些性能问题。此外,书中关于数据库的备份与恢复策略,以及高可用性方案(如主从复制、读写分离)的详细阐述,为保证数据安全和业务连续性提供了坚实的理论基础和实践指导。我还从中学习到了许多关于数据库安全的最佳实践,例如用户权限管理、SQL注入防护等,这些都是在任何生产环境中都不可忽视的重要环节。总而言之,这本书内容详实,讲解透彻,是我在数据库学习道路上不可多得的良师益友。
在我看来,一本优秀的学习指南,不仅仅在于内容的全面性,更在于其讲解的深度和实用性。《MySQL与MariaDB学习指南》在这两个方面都做得非常出色。作者在介绍MySQL和MariaDB的安装和配置时,提供了非常详细的步骤,并且针对不同平台和场景给出了多种选择,这让我能够根据自己的实际情况选择最合适的方案。在SQL语言的学习方面,作者不仅讲解了基本的CRUD操作,还深入到了一些高级特性,例如子查询、连接查询、视图、存储过程和触发器等。我尤其欣赏书中关于索引优化的讲解,作者通过大量的实例,展示了如何通过分析查询计划来找出性能瓶颈,以及如何通过创建合适的索引来提升查询速度。此外,书中关于事务管理和并发控制的内容也让我受益匪浅,作者深入浅出地解释了ACID特性,以及不同事务隔离级别对数据一致性的影响,这对于保证数据库的稳定运行至关重要。我还在书中学习到了关于数据库的备份和恢复策略,以及主从复制和读写分离的实现,这些内容对于保证数据库的高可用性和可扩展性非常有帮助。总而言之,这本书是一本集全面性、深度和实用性于一体的优秀学习指南,它能够帮助读者系统地掌握MySQL和MariaDB的核心知识,并能够将其应用到实际工作中。
我一直认为,学习一门技术,最重要的在于理解其核心思想,并且能够将其灵活运用到实际项目中。《MySQL与MariaDB学习指南》这本书在这方面做得非常出色。作者在介绍MySQL和MariaDB的SQL语法时,不仅仅是列举语法规则,而是结合实际应用场景,解释了每种语法的用途和意义。例如,在讲解JOIN操作时,作者详细对比了INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN的区别,并提供了相应的示例,让我能够清晰地理解它们在数据关联中的作用。我对书中关于索引的讲解印象特别深刻,作者不仅介绍了B-tree索引、哈希索引等常见的索引类型,还深入分析了组合索引、覆盖索引和全文索引的使用场景,以及如何通过EXPLAIN命令来分析查询计划,从而优化索引策略。这对于我提高SQL查询效率提供了非常有效的指导。此外,书中关于视图、存储过程、触发器和事件的介绍,也让我看到了数据库的强大功能,以及如何利用这些特性来简化业务逻辑和提高开发效率。我尤其喜欢书中关于事务管理和并发控制的章节,作者深入浅出地解释了ACID特性,以及不同事务隔离级别对数据一致性的影响,这让我能够更好地理解数据库并发访问的复杂性。总的来说,这本书是一本非常实用的技术指南,它不仅教授了知识,更重要的是教会了如何思考和解决问题,让我能够更自信地运用MySQL和MariaDB来构建高效稳定的应用程序。
作为一名初学者,在接触数据库领域时,我常常感到无从下手,市面上充斥着各种碎片化的信息,很难形成一个完整的知识体系。《MySQL与MariaDB学习指南》这本书的出现,无疑为我点亮了一盏明灯。它以一种循序渐进的方式,从最基础的数据库原理讲起,逐步深入到MySQL和MariaDB的方方面面。我非常喜欢书中的“入门引导”部分,作者用非常通俗易懂的语言,解释了什么是数据库,它为什么重要,以及我们在日常开发中如何与它打交道。这种“无障碍”的开篇,极大地降低了我的学习门槛。接着,在安装配置章节,作者提供了不同操作系统下的详细步骤,并且针对可能遇到的问题给出了解决方案,这让我第一次独立完成数据库的搭建过程,获得了巨大的成就感。SQL语言的学习部分更是详细,作者不仅讲解了基本的CRUD操作,还深入到子查询、连接、视图、存储过程和触发器等更高级的特性。我特别喜欢书中关于索引优化的讲解,通过生动的图示和深入的分析,让我明白了索引是如何工作的,以及如何通过合理的索引设计来提升查询效率。此外,书中对于事务处理和并发控制的阐述,也帮助我理解了数据库的ACID特性,以及如何在多用户环境下保证数据的一致性。这本书不仅仅是一本技术手册,更像是一位耐心细致的老师,在我学习的每一个阶段都给予了充分的指导和帮助,让我能够建立起一个坚实的数据库知识基础。
这本书的标题《MySQL与MariaDB学习指南》让我一开始就充满了期待,因为我一直想深入理解这两个关系型数据库系统,并且希望找到一本能够系统梳理它们之间异同、并且兼顾实际应用的书籍。拿到这本书后,首先吸引我的是它清晰的结构和详实的目录,让我能够快速地了解到作者的编写思路和覆盖的知识点。从数据库的基础概念,到MySQL和MariaDB各自的安装配置,再到SQL语言的深入运用,以及更高级的性能调优和安全管理,这本书的脉络非常清晰。我尤其欣赏的是,作者并没有仅仅停留在理论的层面,而是通过大量的实际案例和代码示例,将枯燥的技术知识变得生动易懂。每一个概念的讲解都配有相应的SQL语句,让我能够边学边练,加深理解。尤其是在数据类型、索引、事务和存储引擎这些关键部分,作者的解释细致入微,对于我之前模糊的概念都有了豁然开朗的感受。书中的一些关于SQL优化技巧的讲解,更是让我受益匪浅,直接帮助我解决了在实际项目中遇到的性能瓶颈问题。此外,作者在介绍MySQL和MariaDB的差异时,也做了非常细致的对比分析,让我能更清楚地了解它们各自的特点和适用场景,这对于我选择和使用数据库提供了重要的参考。总的来说,这是一本我认为非常值得推荐的数据库学习书籍,它不仅提供了扎实的理论基础,更重要的是提供了大量的实操指导,对于任何想要系统学习MySQL和MariaDB的开发者来说,这本书都是一个极佳的选择。
这本书的阅读体验可以用“酣畅淋漓”来形容。作为一名有一定数据库使用经验的开发者,我一直在寻找一本能够帮助我巩固基础、拓展视野,并且能够解决实际问题的好书。《MySQL与MariaDB学习指南》恰恰满足了我的这些需求。作者在对MySQL和MariaDB的架构设计进行分析时,深入剖析了它们各自的特点和演进历史,这对于理解它们的设计哲学和潜在优势非常有帮助。在性能调优方面,书中的内容尤其让我眼前一亮。从慢查询分析、缓存机制的应用,到存储引擎的选择和优化,再到参数配置的调整,作者都给出了非常具体和可操作的建议。我尤其关注了书中关于InnoDB和MyISAM存储引擎的对比分析,以及在不同场景下如何选择合适的存储引擎,这对我之前一直混淆不清的概念有了清晰的认识。此外,对于数据库的备份和恢复策略,以及主从复制和读写分离的实现,书中的讲解也非常到位,提供了多种实现方案和详细的步骤。这些内容对于保证数据库的稳定运行和高可用性至关重要。我还在书中学习到了关于数据库安全的一些实践方法,包括用户权限管理、SQL注入的防范以及数据加密等,这些都是在实际项目中不可忽视的安全措施。总而言之,这本书的内容非常全面且深入,既有广度又有深度,能够帮助读者在掌握数据库基础的同时,也能在性能优化、高可用性和安全性方面得到显著提升。
曾经以为MariaDB会复制MySQL的成功,再次风靡全球,但是后来才发现在开源软件的世界中,虽天生具有自由、分享、极客的浪漫情怀,但理想主义却是行不通的,许多事情的发展哪怕是项目创始人也不能预期、控制,凝聚集体智慧才是发挥开源力量的有效方法,在不见面的网络世界,价值观和行为准则这些看似很虚的东西获得了大家的共同拥护。社区是不是新的生产力组织形式呢?
代码的数据不够,后面没法做。。
代码的数据不够,后面没法做。。
强烈推荐,非常通俗易懂的入门读物!!!告诉你mysql的名字的由来!合适的距离将抽象的内容展现于纸上。
凑合吧