MySQL技术内幕(第5版) pdf

MySQL技术内幕(第5版)

内容简介

《MySQL技术内幕(第5版)》是MySQL方面名副其实的经典著作,全面介绍MySQL的基础知识以及MySQL有别于其他数据库系统的独特功能,书中特别关注如何高效地使用和管理MySQL。

《MySQL技术内幕(第5版)》由4个部分组成:第一部分集中介绍与数据库使用相关的一些基本概念,第二部分重点关注的是自己如何动手编写和使用MySQL的程序,第三部分主要是面向那些负责数据库管理的读者,第四部分提供了一些参考附录。书中包含大量示例,详尽地演示了MySQL的各项功能特性。此外,本书还为使用C语言、PHP语言和Perl语言开发数据库应用的读者提供了相关内容。

作者简介

Paul DuBois 是作家,数据库管理员,也是开源社区和MySQL社区的领导者。他为MySQL在线文档做出了很大贡献,其著作包括MySQL and Perl for the Web、MySQL Cookbook、Using csh and tcsh和Software Portability with imake。目前,他是Oracle公司MySQL文档团队的一名技术作家。

目录

第1章 MySQL入门 1
1.1 MySQL的用途 1
1.2 示例数据库 3
1.2.1 美史联盟项目 4
1.2.2 成绩考评项目 5
1.2.3 如何运用示例数据库 5
1.3 基本数据库术语 6
1.3.1 结构术语 6
1.3.2 查询语言术语 8
1.3.3 MySQL的体系结构术语 8
1.4 MySQL教程 9
1.4.1 获取示例数据库发行包 10
1.4.2 基本配置要求 10
1.4.3 建立和断开MySQL服务器连接 11
1.4.4 执行SQL语句 13
1.4.5 创建数据库 15
1.4.6 创建表 15
1.4.7 添加新行 29
1.4.8 重置sampdb数据库 32
1.4.9 检索信息 33
1.4.10 删除或更新已有行 56
1.5 mysql交互技巧 58
1.5.1 简化连接过程 58
1.5.2 在调用命令时减少打字输入 60
1.6 何去何从 63
第2章 使用SQL管理数据 64
2.1 服务器的SQL模式 65
2.2 MySQL的标识符语法和命名规则 66
2.3 SQL语句的大小写规则 67
2.4 字符集支持 68
2.4.1 指定字符集 69
2.4.2 确定可用字符集和当前设置 70
2.4.3 Unicode支持 71
2.5 数据库的选择、创建、删除和更改 72
2.5.1 选择数据库 72
2.5.2 创建数据库 72
2.5.3 删除数据库 73
2.5.4 更改数据库 73
2.6 表的创建、删除、索引和更改 73
2.6.1 存储引擎的特性 73
2.6.2 创建表 77
2.6.3 删除表 84
2.6.4 索引表 84
2.6.5 更改表结构 88
2.7 获取数据库元数据 90
2.7.1 使用SHOW语句获取元数据 90
2.7.2 借助INFORMATION_SCHEMA获取元数据 92
2.7.3 从命令行获取元数据 94
2.8 使用连接实现多表检索 95
2.8.1 内连接 96
2.8.2 对被连接表里的列引用进行限定 97
2.8.3 左(外)连接和右(外)连接 97
2.9 使用子查询实现多表检索 100
2.9.1 带关系比较运算符的子查询 101
2.9.2 IN和NOT IN子查询 102
2.9.3 ALL、ANY和SOME子查询 103
2.9.4 EXISTS和NOT EXISTS子查询 103
2.9.5 相关子查询 104
2.9.6 FROM子句里的子查询 104
2.9.7 将子查询改写为连接 104
2.10 使用UNION实现多表检索 106
2.11 多表删除和更新 108
2.12 事务处理 110
2.12.1 利用事务保证语句安全执行 111
2.12.2 使用事务保存点 114
2.12.3 事务隔离 114
2.13 外键和引用完整性 116
2.14 使用FULLTEXT搜索 121
2.14.1 自然语言FULLTEXT搜索 122
2.14.2 布尔模式的全文搜索 124
2.14.3 查询扩展全文搜索 125
2.14.4 配置全文搜索引擎 126
第3章 数据类型 127
3.1 数据值类别 128
3.1.1 数值 128
3.1.2 字符串值 129
3.1.3 时态(日期/时间)值 136
3.1.4 空间值 136
3.1.5 布尔值 136
3.1.6 NULL值 136
3.2 MySQL数据类型 137
3.2.1 数据类型概述 137
3.2.2 表定义里的特殊列类型 138
3.2.3 指定列的默认值 139
3.2.4 数字数据类型 140
3.2.5 字符串数据类型 145
3.2.6 时态(日期/时间)数据类型 156
3.3 MySQL如何处理效数据值 163
3.4 处理序列 164
3.4.1 通用的AUTO_INCREMENT属性 164
3.4.2 存储引擎特有的AUTO_INCREMENT属性 166
3.4.3 使用AUTO_INCREMENT列需要考虑的问题 168
3.4.4 AUTO_INCREMENT列的使用提示 168
3.4.5 在AUTO_INCREMENT的情况下生成序列 170
3.5 表达式计算和类型转换 171
3.5.1 编写表达式 172
3.5.2 类型转换 177
3.6 选择数据类型 183
3.6.1 列要存放什么类型的值 184
3.6.2 所有值是否都在某个特定的区间内 186
第4章 视图和存储程序 188
4.1 使用视图 189
4.2 使用存储程序 191
4.2.1 复合语句和语句分隔符 191
4.2.2 存储函数和存储过程 193
4.2.3 触发器 196
4.2.4 事件 197
4.3 视图和存储程序的安全性 199
第5章 查询优化 200
5.1 使用索引 200
5.1.1 索引的优点 201
5.1.2 索引的代价 203
5.1.3 挑选索引 203
5.2 MySQL查询优化程序 206
5.2.1 查询优化程序的工作原理 207
5.2.2 使用EXPLAIN检查优化程序的操作 209
5.3 选择利于高效查询的数据类型 214
5.4 选择利于高效查询的表存储格式 216
5.5 高效加载数据 217
5.6 调度、锁定和并发 219
第6章 MySQL程序设计入门 221
6.1 为何要自己编写MySQL程序 221
6.2 MySQL提供的API 223
6.2.1 C语言API 224
6.2.2 Perl语言DBI API 224
6.2.3 PHP语言API 225
6.3 选择API 226
6.3.1 执行环境 227
6.3.2 性能 227
6.3.3 开发时间 228
6.3.4 可移植性 228
第7章 用C语言编写MySQL程序 230
7.1 编译和链接客户端程序 231
7.2 连接服务器 233
7.3 出错处理和命令选项处理 236
7.3.1 出错检查 236
7.3.2 实时获取连接参数 239
7.3.3 把选项处理整合进客户端程序 248
7.4 处理SQL语句 252
7.4.1 处理那些修改行的语句 253
7.4.2 处理那些返回结果集的语句 254
7.4.3 通用的语句处理器 256
7.4.4 另一种语句处理方法 257
7.4.5 mysql_store_result()与mysql_use_result()的对比 258
7.4.6 使用结果集元数据 260
7.4.7 对特殊字符和二进制数据进行编码 264
7.5 交互式语句执行程序 267
7.6 编写支持SSL的客户端程序 268
7.7 一次执行多条语句 272
7.8 使用服务器端预处理语句 273
7.9 使用预处理CALL支持 282
第8章 用Perl DBI编写MySQL程序 286
8.1 Perl脚本的特点 286
8.2 Perl DBI概述 287
8.2.1 DBI数据类型 287
8.2.2 一个简单的DBI脚本 288
8.2.3 出错处理 291
8.2.4 处理那些修改行的语句 294
8.2.5 处理那些返回结果集的语句 295
8.2.6 在语句串里引用特殊字符 302
8.2.7 占位符与预处理语句 305
8.2.8 把查询结果绑定到脚本变量 307
8.2.9 指定连接参数 307
8.2.10 调试 310
8.2.11 使用结果集元数据 312
8.2.12 执行事务 316
8.3 DBI脚本实践 317
8.3.1 生成美史联盟成员名录 317
8.3.2 发送成员资格更新通知 322
8.3.3 编辑美史联盟成员条目 326
8.3.4 寻找志趣相投的联盟成员 331
8.3.5 把美史联盟成员名录放到网上 332
8.4 使用DBI来开发Web应用程序 334
8.4.1 配置Apache服务器来处理CGI脚本 335
8.4.2 CGI.pm模块简介 336
8.4.3 从Web脚本连接MySQL服务器 342
8.4.4 基于Web的数据库浏览器 343
8.4.5 成绩考评项目:分数浏览器 347
8.4.6 美史联盟:搜索志趣相投的成员 350
第9章 用PHP语言编写MySQL程序 354
9.1 PHP概述 355
9.1.1 一个简单的PHP脚本 357
9.1.2 利用PHP库文件实现代码封装 359
9.1.3 简单的数据检索页面 363
9.1.4 处理语句结果 365
9.1.5 测试查询结果里的NULL值 368
9.1.6 使用预处理语句 369
9.1.7 利用占位符来处理数据引号问题 369
9.1.8 出错处理 371
9.2 PHP脚本实战 372
9.2.1 一个在线录入分数的应用程序 373
9.2.2 创建交互式的在线测验 382
9.2.3 在线编辑美史联盟成员信息 386
第10章 MySQL管理简介 393
10.1 MySQL组件 393
10.2 MySQL的常规管理 3

感悟与笔记

MySql存储引擎

  • Innodb存储引擎
    • 支持事务,其特点是行锁设计、支持外键。
    • Innodb是Mysql默认的存储引擎。
  • MyISAM存储引擎
    • MyIsam存储引擎不支持事务和表锁设计,Myisam也不支持外键,但是支持全文索引。

索引与算法

  • 常见的索引:B+树索引、全文索引、哈希索引。
  • B+树,是通过二叉查找树,再由平衡二叉树,B树演化而来。
    • 二叉查找树
      • 二叉查找树:左子树的值总是小于根的值,右子树的值总是大于根的值。可以通过中序遍历得到值的排序输出。平均查找速度比顺序查找来得快。
    • 平衡二叉树(AVL树)
      • 平衡二叉树:首先符合二叉查找树的定义,其次必须满足任何节点的两个子树的高度的最大差为1。

B+树

  • B+树:是为磁盘或其他直接存取辅助设备设计的一种平衡树。
  • 在B+树中,所有记录节点都是按键值对的大小顺序存放在同一层的叶子节点上,由各叶子节点指针进行连接。
  • 优点:B+树的高度一般都在2--4层。也就是查找某一键值的行记录时最多只需要2--4次IO就可以了。

B+树索引

  • B+树:是为磁盘或其他直接存取辅助设备设计的一种平衡树。
  • B+树索引,分为聚集索引和辅助索引。
  • 聚集索引和辅助索引的区别:叶子节点存放的是否是一整行的信息。

聚集索引

  • 聚集索引:就是按照每张表的主键构造一颗B+树,同时叶子节点存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。

辅助索引(非聚集索引)

  • 辅助索引:叶子节点并不包含行记录的全部数据。叶子节点除了包含键值以外,每个叶子节点中的索引行中还包含了一个书签(bookmark)。该书签用来告诉Innodb存储引擎哪里可以找到与索引相对应的行数据。辅助索引的书签就是相应行数据的聚集索引键。

Cardinality值

  • SHOW INDEX FROM 表名
    • 该语句可以查看表的索引信息。
  • Cardinality值非常关键,优化器会根据这个值来判断是否使用这个索引。
    • 对于性别,地区类型的字段,可取值的范围小,称为“低选择性”,没有必要使用B+树索引。
    • Cardinality值,表示索引中不重复记录数量的预估值。在实际运用中,Cardinality尽可能地接近1。如果非常小,用户需要考虑是否还有必要创建这个索引。

会员免费下载

链接:https://pan.baidu.com/s/1L94kc21W1zeMXmltqIUYMw

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

MySQL

资源推荐

Oracle数据库性能优化方法论和最佳实践

Oracle数据库管理从入门到精通

Oracle PL/SQL DBA编程入门

高性能MySQL(第3版)

Oracle PLSQL性能调优诀窍与方法

MySQL王者晋级之路

数据库系统导论(原书第8版)

PostgreSQL实战

Copyright © 2021-2022 知识猫. All Rights Reserved.