由杜波依斯编著的《MySQL技术内幕(第4版)》介绍了MySQL的基础知识及其有别于其他数据库系统的独特功能,包括SQL的工作原理和MySQL API的相关知识;讲述了如何将MySQL与Perl或PHP等语言结合起来,为数据库查询结果生成动态Web页面,如何编写MySQL数据访问程序;详细讨论了数据库管理和维护、数据目录的组织和内容、访问控制、安全连接等。附录还提供了软件的安装信息,罗列了MySQL数据类型、函数、变量、语法、程序、API等重要细节。 《MySQL技术内幕(第4版)》是一部全面的MySQL指南,对数据库系统感兴趣的读者都能从中获益。
第一部分 MySQL 基础知识
第1 章 MySQL 和SQL 入门 2
1.1 MySQL 的用途2
1.2 示例数据库4
1.2.1 “美国历史研究会”场景 5
1.2.2 考试记分项目7
1.2.3 关于示例数据库的说明 7
1.3 数据库基本术语7
1.3.1 数据库的组织结构8
1.3.2 数据库查询语言10
1.3.3 MySQL 的体系结构10
1.4 MySQL 11
1.4.1 如何获得示例数据库 12
1.4.2 最低配置要求12
1.4.3 如何建立和断开与服务器的连接 13
1.4.4 执行SQL 语句15
1.4.5 创建数据库17
1.4.6 创建数据表18
1.4.7 如何添加新的数据行33
1.4.8 将sampdb 数据库重设为原来的状态 36
1.4.9 检索信息37
1.4.10 如何删除或更新现有的数据行 64
1.5 与客户程序mysql 交互的技巧 66
1.5.1 简化连接过程 67
1.5.2 减少输入查询命令时的打字动作69
1.6 后面各章的学习计划 72
第2 章 使用SQL 管理数据 73
2.1 MySQL 服务器的SQL 模式 73
2.2 MySQL 标识符语法和命名规则 74
2.3 SQL 语句中的字母大小写问题 77
2.4 字符集支持 78
2.4.1 字符集的设定79
2.4.2 确定可供选用的字符集和当前设置 80
2.4.3 Unicode 支持81
2.5 数据库的选定、创建、删除和变更82
2.5.1 数据库的选定 82
2.5.2 数据库的创建 82
2.5.3 数据库的删除 83
2.5.4 数据库的变更 83
2.6 数据表的创建、删除、索引和变更84
2.6.1 存储引擎的特征 84
2.6.2 创建数据表 90
2.6.3 删除数据表101
2.6.4 为数据表编制索引101
2.6.5 改变数据表的结构106
2.7 获取数据库的元数据108
2.7.1 用SHOW 语句获取元数据109
2.7.2 从INFORMATION_SCHEMA数据库获取元数据 110
2.7.3 从命令行获取元数据 112
2.8 利用联结操作对多个数据表进行检索 113
2.8.1 内联结114
2.8.2 避免歧义:如何在联结操作中给出数据列的名字116
2.8.3 左联结和右联结(外联结) 116
2.9 用子查询进行多数据表检索 120
2.9.1 子查询与关系比较操作符 121
2.9.2 IN 和NOT IN 子查询122
2.9.3 ALL、ANY 和SOME 子查询123
2.9.4 EXISTS 和NOT EXISTS子查询 124
2.9.5 与主查询相关的子查询 124
2.9.6 FROM 子句中的子查询 124
2.9.7 把子查询改写为联结查询 125
2.10 用UNION 语句进行多数据表检索126
2.11 使用视图129
2.12 涉及多个数据表的删除和更新操作133
2.13 事务处理134
2.13.1 利用事务来保证语句的安全执行135
2.13.2 使用事务保存点139
2.13.3 事务的隔离性139
2.13.4 事务问题的非事务解决方案 140
2.14 外键和引用完整性 143
2.14.1 外键的创建和使用 144
2.14.2 如果不能使用外键该怎么办 149
2.15 使用FULLTEXT 索引150
2.15.1 全文搜索:自然语言模式151
2.15.2 全文搜索:布尔模式 153
2.15.3 全文搜索:查询扩展模式 154
2.15.4 配置全文搜索引擎 155
第3 章 数据类型156
3.1 数据值的类别157
3.1.1 数值157
3.1.2 字符串值158
3.1.3 日期/时间值 166
3.1.4 坐标值 166
3.1.5 布尔值 166
3.1.6 空值NULL 166
3.2 MySQL 的数据类型166
3.2.1 数据类型概述167
3.2.2 数据表中的特殊列类型 168
3.2.3 指定列默认值169
3.2.4 数值数据类型170
3.2.5 字符串数据类型 176
3.2.6 日期/时间数据类型189
3.2.7 空间数据类型 196
3.3 MySQL 如何处理非法数据值 197
3.4 序列 199
3.4.1 通用AUTO_INCREMENT 属性 199
3.4.2 与特定存储引擎有关的AUTO_INCREMENT 属性201
3.4.3 使用AUTO_INCREMENT 数据列时的要点 203
3.4.4 使用AUTO_INCREMENT 机制时的注意事项 204
3.4.5 如何在不使用AUTO_INCREMENT的情况下生成序列编号 205
3.5 表达式求值和类型转换207
3.5.1 表达式的编写207
3.5.2 类型转换 213
3.6 数据类型的选用 220
3.6.1 数据列将容纳什么样的数据222
3.6.2 数据是否都在某个特定的区间内224
3.6.3 与挑选数据类型有关的问题是相互影响的225
第4 章 存储程序227
4.1 复合语句和语句分隔符 228
4.2 存储函数和存储过程 229
4.2.1 存储函数和存储过程的权限231
4.2.2 存储过程的参数类型 232
4.3 触发器 233
4.4 事件234
4.5 存储程序和视图的安全性236
第5 章 查询优化 237
5.1 使用索引237
5.1.1 索引的优点238
5.1.2 索引的缺点240
5.1.3 挑选索引 241
5.2 MySQL 的查询优化程序243
5.2.1 查询优化器的工作原理 244
5.2.2 用EXPLAIN 语句检查优化器操作 247
5.3 为提高查询效率而挑选数据类型 252
5.4 有效加载数据 255
5.5 调度和锁定问题258
5.5.1 改变语句的执行优先级 259
5.5.2 使用延迟插入 259
5.5.3 使用并发插入260
5.5.4 锁定级别与并发性260
5.6 系统管理员所完成的优化 261
5.6.1 使用MyISAM键缓存263
5.6.2 使用查询缓存264
5.6.3 硬件优化265
第二部 分 MySQL 的编程接口第6 章 MySQL 程序设计 268
6.1 为什么要自己编写MySQL 程序 268
6.2 MySQL 应用程序可用的API 271
6.2.1 C API 272
6.2.2 Perl DBI API 272
6.2.3 PHP API 274
6.3 如何挑选API 275
6.3.1 执行环境 275
6.3.2 性能276
6.3.3 开发时间278
6.3.4 可移植性280
第7 章 用C 语言编写MySQL 程序 281
7.1 编译和链接客户程序282
7.2 连接到服务器284
7.3 出错消息和命令行选项的处理 287
7.3.1 出错检查287
7.3.2 实时获取连接参数 290
7.3.3 给MySQL 客户程序增加选项处理功能301
7.4 处理SQL 语句305
7.4.1 处理修改数据行的语句 306
7.4.2 处理有结果集的语句 307
7.4.3 一个通用的语句处理程序310
7.4.4 另一种语句处理方案 311
7.4.5 mysql_store_result()与mysql_use_result()函数的对比312
7.4.6 使用结果集元数据314
7.4.7 对特殊字符和二进制数据进行编码319
7.5 交互式语句执行程序322
7.6 怎样编写具备SSL 支持的客户程序323
7.7 嵌入式服务器库的使用327
7.7.1 编写内建了服务器的应用程序 328
7.7.2 生成应用程序可执行二进制文件330
7.8 一次执行多条语句 331
7.9 使用服务器端预处理语句 333
第8 章 使用Perl DBI 编写MySQL 程序343
8.1 Perl 脚本的特点343
8.2 Perl DBI 概述344
8.2.1 DBI 数据类型344
8.2.2 一个简单的DBI 脚本 345
8.2.3 出错处理349
8.2.4 处理修改数据行的语句 352
8.2.5 处理返回结果集的语句 353
8.2.6 在语句字符串引用特殊字符 361
8.2.7 占位符与预处理语句 363
8.2.8 把查询结果绑定到脚本变量365
8.2.9 设定连接参数366
8.2.10 调试 369
8.2.11 使用结果集的元数据372
8.2.12 实现事务处理376
8.3 DBI 脚本实战 377
8.3.1 生成美国历史研究会会员名录 377
8.3.2 发出会费催交通知382
8.3.3 会员记录项的编辑修改 387
8.3.4 寻找志趣相同的会员 392
8.3.5 把会员名录放到网上 393
8.4 用DBI 开发Web 应用396
8.4.1 配置Apache 服务器使用CGI脚本397
8.4.2 CGI.pm 模块简介 398
8.4.3 从Web脚本连接MySQL服务器 404
8.4.4 一个基于Web 的数据库浏览器406
8.4.5 考试记分项目:考试分数浏览器410
8.4.6 美国历史研究会:寻找志趣相同的会员 413
第9 章 用PHP 编写MySQL 程序 418
9.1 PHP 概述 419
9.1.1 一个简单的PHP 脚本 421
9.1.2 利用PHP 库文件实现代码封装 424
9.1.3 简单的数据检索页面 428
9.1.4 处理语句结果 431
9.1.5 测试查询结果里的NULL 值434
9.1.6 使用预处理语句434
9.1.7 利用占位符来处理带引号的数据值 435
9.1.8 出错处理 437
9.2 PHP 脚本实战438
9.2.1 考试分数的在线录入 438
9.2.2 创建一个交互式在线测验449
9.2.3 美国历史研究会:会员个人资料的在线修改454
第三部分 MySQL 的系统管理
第10 章 MySQL 系统管理简介 462
10.1 MySQL 组件462
10.2 常规管理463
10.3 访问控制与安全性 464
10.4 数据库的维护、备份和复制464
第11 章 MySQL 的数据目录466
11.1 数据目录的位置466
11.2 数据目录的层次结构 468
11.2.1 MySQL 服务器如何提供对数据的访问468
11.2.2 MySQL 数据库在文件系统里是如何表示的 469
11.2.3 数据表在文件系统里的表示方式 470
11.2.4 视图和触发器在文件系统里的表示方式471
11.2.5 SQL 语句与数据表文件操作的对应关系472
11.2.6 操作系统对数据库对象的命名规则有何影响472
11.2.7 影响数据表最大长度的因素 474
11.2.8 数据目录的结构对系统性能的影响475
11.2.9 MySQL 状态文件和日志文件 477
11.3 重新安置数据目录的内容 479
11.3.1 重新安置工作的具体方法479
11.3.2 重新安置注意事项 480
11.3.3 评估重新安置的效果 480
11.3.4 重新安置整个数据目录 481
11.3.5 重新安置各个数据库 481
11.3.6 重新安置各个数据表 482
11.3.7 重新安置InnoDB 共享表空间 482
11.3.8 重新安置状态文件和日志文件482
第12 章 MySQL 数据库系统的日常管理484
12.1 安装MySQL 软件后的初始安防设置484
12.1.1 为初始MySQL账户设置口令 485
12.1.2 为第二个服务器设置口令489
12.2 安排MySQL 服务器的启动和关停489
12.2.1 在Unix 上运行MySQL服务器489
12.2.2 在Windows 上运行MySQL服务器493
12.2.3 指定服务器启动选项 495
12.2.4 关闭服务器 497
12.2.5 当你未能连接至服务器时重新获得服务器的控制497
12.3 对MySQL 服务器的连接监听情况进行控制 499
12.4 管理MySQL 用户账户 500
12.4.1 高级MySQL 账户管理操作501
12.4.2 对账户授权503
12.4.3 查看账户的权限 510
12.4.4 撤销权限和删除用户 510
12.4.5 改变口令或重新设置丢失的口令511
12.5 维护日志文件512
12.5.1 出错日志 514
12.5.2 常规查询日志 515
12.5.3 慢查询日志515
12.5.4 二进制日志和二进制日志索引文件516
12.5.5 中继日志和中继日志索引文件 517
12.5.6 日志数据表的使用 518
12.5.7 日志管理519
12.6 调整MySQL 服务器 524
12.6.1 查看和设置系统变量的值525
12.6.2 通用型系统变量 528
12.6.3 查看状态变量的值 530
12.7 存储引擎的配置 531
12.7.1 为MySQL 服务器挑选存储引擎 531
12.7.2 配置MyISAM 存储引擎 533
12.7.3 配置InnoDB 存储引擎 536
12.7.4 配置Falcon 存储引擎 541
12.8 启用或者禁用LOAD DATA 语句的LOCAL 能力 541
12.9 国际化和本地化问题542
12.9.1 设置MySQL 服务器的地理时区542
12.9.2 选择用来显示出错信息的语言544
12.9.3 配置MySQL 服务器的字符集支持 544
12.10 运行多个服务器 545
12.10.1 运行多个服务器的问题 545
12.10.2 配置和编译不同的服务器 547
12.10.3 指定启动选项的决策 548
12.10.4 用于服务器管理的mysqld_multi 549
12.10.5 在Windows 系统上运行多个MySQL 服务器550
12.11 升 级MySQL553
第13 章 访问控件和安全555
13.1 内部安全性:防止未经授权的文件系统访问555
13.1.1 如何偷取数据 556
13.1.2 保护你的MySQL 安装 557
13.2 外部安全性:防止未经授权的网络访问562
13.2.1 MySQL 权限表的结构和内容 562
13.2.2 服务器如何控制客户访问 568
13.2.3 一个关于权限的难题 572
13.2.4 应该回避的权限数据表风险 575
13.3 加密连接的建立577
第14 章 MySQL 数据库的维护、备份和复制 582
14.1 数据库预防性维护工作的基本原则 582
14.2 在MySQL 服务器运行时维护数据库583
14.2.1 以只读方式或读/写方式锁定一个或多个数据表 584
14.2.2 以只读方式锁定所有的数据库586
14.3 预防性维护 587
14.3.1 充分利用MySQL 服务器的自动恢复能力 587
14.3.2 定期进行预防性维护 588
14.4 制作数据库备份 589
14.4.1 用mysqldump 程序制作文本备份590
14.4.2 制作二进制数据库备份 593
14.4.3 备份InnoDB或Faclcon数据表 595
14.5 把数据库复制到另一个服务器 596
14.5.1 使用一个备份文件来复制数据库 596
14.5.2 把数据库从一个服务器复制到另一个597
14.6 数据表的检查和修复598
14.6.1 用服务器检查和修复数据表 599
14.6.2 用mysqlcheck 程序检查和修复数据表599
14.6.3 用myisamchk 程序检查和修复数据表 600
14.7 使用备份进行数据恢复 603
14.7.1 恢复整个数据库603
14.7.2 恢复数据表604
14.7.3 重新执行二进制日志文件里的语句605
14.7.4 InnoDB 存储引擎的自动恢复功能606
14.8 设置复制服务器 607
14.8.1 复制机制的工作原理607
14.8.2 建立主从复制关系 609
14.8.3 二进制日志的格式 611
14.8.4 使用复制机制制作备份612
第四部分 附 录
附录A 获得并安装有关软件614
附录B 数据类型指南 630
附录C 操作符与函数用法指南 643
附录D 系统变量、状态变量和用户变量使用指南705
附录E SQL 语法指南 746
附录F MySQL 程序指南 823
附录G API 指南(图灵网站下载)
附录H Perl DBI API 指南(图灵网站下载)
附录I PHP API 指南(图灵网站下载)
《马克思与当代中国》内容简介:中国站到了实现“强起来”的新的历史起点上,迎来了从“富起来”到“强起来”的伟大飞跃。历史已经
《信号与系统》共分十章,内容包括:信号的函数表示与系统分析方法,连续系统时域分析,连续信号傅里叶分析,连续系统频域分析,
多维信号处理:快速变换.稀疏表示与低秩分析 本书特色 多数信号处理论著主要针对理论与方法臻备的一维信号,而对于仍在发展完善中的多维信号处理少有涉及或涉之不深。本...
《JavaScript模式》包含了实现每个讨论的模式的实践建议,并附有数个可以立即上手的范例。同时还可以学到一些反模式,一些常见的
Visual FoxPro及其应用系统开发第二版 内容简介 本书是《Visual FoxPro 及其应用系统开发》一书的第二版。本次再版把重点放在加强Web应用...
本书收录StephenM.Stigler的22篇论文,主要关于统计的发展历史,同时涉及统计思维、统计标准与统计检测等诸多方面。本书特别关注
《光线跟踪算法技术》详细阐述了与光线跟踪问题相关的高效解决方案及相应的数据结构和算法,主要包括采样技术、投影视图、视见系
《软件产品质量要求和测试细则》内容简介:计算机软件是计算机应用的核心,其质量的好坏关系到计算机应用系统的成败,软件测评是提
《基因科技成果利益分享研究》内容简介:基因衍生科技成果,必须对人体组织提供者的利益作出恰当配置,方能保证研发的有序规范进行
「這是個以世界第一為目標、每個人都很辛勤努力的世界。那麼,如果說將人劃分為「可以悠遊」與「不能悠遊」於這個競爭世界的人,
“Theamountofknowledgeandtalentdispersedamongthehumanracehasalwaysoutstrippedourc...
《数据结构简明教程(第2版·微课版)》内容简介:本书内容包括概论、线性表、栈和队列、串、数组和稀疏矩阵、树和二叉树、图、查找
《深度学习与围棋》内容简介:这是一本深入浅出且极富趣味的深度学习入门书。本书选取深度学习近年来最重大的突破之一AlphaGo,将其
关于此书:从甜美的、柔软的、透气的凝胶体,到发光的塑料材料,以及能自行组装的性能,此书都将带你领略塑料的迷人美丽。这里没
ErnestW.Adams是一名美国游戏设计顾问,现定居于英国。除顾问工作外,他还开办游戏设计研讨班,并在各种会议和大学中发表演讲,广
《电子封装技术设备操作手册》内容简介:本书以电子封装工艺为主线,按照电子封装工艺的前道封装与后道封装,分成了半导体芯片封装
《在远远的背后带领》内容简介:作为家庭教育领域内的标杆性人物之一,安心用十年的时间从不越界、不评判、负责任、无伤害等6个角度
《Puppet实战》内容简介:Puppet领域的经典之作,资深运维专家多年一线经验结晶,51cto技术社区强烈推荐,新浪研发中心平台架构部高
◆全球工业设计教父,世界顶级创意咨询公司青蛙公司创始人哈特穆特·艾斯林格,首次揭秘设计战略如何塑造商业的未来,如何将创新
会声会影X4从新手到高手-1DVD多媒体教学光盘 本书特色 本书主要特点内容全面实用 >选择*实用、*常用的知识,力求您“学的知识都用得上”,让您的学习不做无用...