本书内容提挈:\r\n\r\n ·与MySQL交互——包括对MySQL所实现的SQL的详细介绍\r\n\r\n ·数据类型、变量、列类型、内建函数以及命令行实用程序\r\n\r\n ·全面讲解如何使用MySQL的C API\r\n\r\n ·MySQL管理、备份和灾难恢复\r\n\r\n ·应用程序优化和安全性\r\n\r\n ·分布式数据库开发\r\n\r\n ·通过新增的功能来扩展MySQL\r\n\r\n ·构建可迁移至其他数据库平台的数据库\r\n\r\n 本书由著名开放源代码专家Leon Atkinson现身说法,提供了快速构建企业级My SQL应用程序所需的全部代码及相关知识。首先介绍了MySQL基础知识:SQL查询、数据库设计、正规化、事务处理以及并发性;然后系统地讲述了MySQL的每一项最重要的特性,并介绍了如何从C,Java,PHP,Perl,Python以及其他编程环境直接同MySQL数据库进行交互。本书深入讨论安全性、数据存储、优化、分布式数据库和其他高级主题,是一本面向专业开发者的、全面的、提供丰富源代码的MySQL指南。\r\n\r\n \r\n
\r\n
第I部分 MySQL和关系模型 \r\n\r\n 第1章 MySQL入门 \r\n\r\n 1. 1 人们如何使用数据库 \r\n\r\n 1. 2 数据库比文件好的原因 \r\n\r\n 1. 3 数据库不是万灵药 \r\n\r\n 1. 4 为什么选择MySQL \r\n\r\n 1. 5 MySQL的历史 \r\n\r\n 第2章 安装MySQL \r\n\r\n 2. 1 下载安装文件 \r\n\r\n 2. 2 用LinuxRPM安装 \r\n\r\n 2. 3 Windows安装程序 \r\n\r\n 2. 4 编译源代码 \r\n\r\n 2. 5 授予权限 \r\n\r\n 第3章 同MySQL交互 \r\n\r\n 3. 1 TCP/IP上的客户机/服务器 \r\n\r\n 3. 2 命令行实用程序 \r\n\r\n 3. 3 图形客户机 \r\n\r\n 3. 4 ODBC \r\n\r\n 3. 5 Web接口 \r\n\r\n 第4章 数据库概念 \r\n\r\n 4. 1 历史 \r\n\r\n 4. 2 术语 \r\n\r\n 4. 3 数据库管理系统 \r\n\r\n 4. 4 平面文件数据库 \r\n\r\n 4. 5 层次化数据库 \r\n\r\n 4. 6 关系型数据库 \r\n\r\n 4. 7 对象数据库 \r\n\r\n 4. 8 对象关系型数据库 \r\n\r\n 第5章 关系模型 \r\n\r\n 5. 1 关系代数 \r\n\r\n 5. 2 表. 行和列 \r\n\r\n 5. 3 键 \r\n\r\n 5. 4 关系 \r\n\r\n 5. 5 关系运算 \r\n\r\n 5. 6 MySQL是否为真正的RDBMS \r\n\r\n 第6章 结构化查询语言 \r\n\r\n 6. 1 SQL是第4代语言 \r\n\r\n 6. 2 数据定义 \r\n\r\n 6. 3 插入行 \r\n\r\n 6. 4 更新行 \r\n\r\n 6. 5 删除行 \r\n\r\n 6. 6 查询 \r\n\r\n 6. 7 联接 \r\n\r\n 6. 8 排序 \r\n\r\n 6. 9 分组 \r\n\r\n 6. 10 限制 \r\n\r\n 6. 11 更改表 \r\n\r\n 第7章 数据库设计 \r\n\r\n 7. 1 需求规格 \r\n\r\n 7. 2 设计规格 \r\n\r\n 7. 3 制图 \r\n\r\n 7. 4 建模语言 \r\n\r\n 7. 5 2R图 \r\n\r\n 7. 6 创建图 \r\n\r\n 7. 7 实现设计 \r\n\r\n 7. 8 测试 \r\n\r\n 7. 9 规划数据库生命周期 \r\n\r\n 第8章 正规化 \r\n\r\n 8. 1 为什么要正规化 \r\n\r\n 8. 2 第一范式 \r\n\r\n 8. 3 第二范式 \r\n\r\n 8. 4 第三范式 \r\n\r\n 8. 5 Boyce-Codd范式 \r\n\r\n 8. 6 第四范式 \r\n\r\n 8. 7 反正规化 \r\n\r\n 第9章 事务处理和并发性 \r\n\r\n 9. 1 并发性 \r\n\r\n 9. 2 事务 \r\n\r\n 9. 3 锁定 \r\n\r\n 9. 4 序列 \r\n\r\n \r\n\r\n 第II部分 MySQL参考 \r\n\r\n 第10章 数据类型. 变量和表达式 \r\n\r\n 10. 1 数据类型 \r\n\r\n 10. 2 变量 \r\n\r\n 10. 3 运算符 \r\n\r\n 10. 4 表达式 \r\n\r\n 10. 5 名称中的空格 \r\n\r\n 第11章 列和索引类型 \r\n\r\n 11. 1 数值 \r\n\r\n 11. 2 字符串 \r\n\r\n 11. 3 时间值 \r\n\r\n 11. 4 列类型别名 \r\n\r\n 11. 5 索引 \r\n\r\n 第12章 内建函数 \r\n\r\n 12. 1 调试与配置 \r\n\r\n 12. 2 流程控制 \r\n\r\n 12. 3 分组 \r\n\r\n 12. 4 数学运算 \r\n\r\n 12. 5 字符串 \r\n\r\n 12. 6 时间 \r\n\r\n 12. 7 杂项 \r\n\r\n 12. 8 过程 \r\n\r\n 第13章 SQL语句 \r\n\r\n 13. 1 注释 \r\n\r\n 13. 2 Alter Table语句 \r\n\r\n 13. 3 Analyze Table语句 \r\n\r\n 13. 4 Backup Table语句 \r\n\r\n 13. 5 Begin [WORK]语句 \r\n\r\n 13. 6 Change Master语句 \r\n\r\n 13. 7 Check Table语句 \r\n\r\n 13. 8 Commit语句 \r\n\r\n 13. 9 Create Database语句 \r\n\r\n 13. 10 Create Function语句 \r\n\r\n 13. 11 Create Index语句 \r\n\r\n 13. 12 Create Table语句 \r\n\r\n 13. 13 Delete语句 \r\n\r\n 13. 14 Describe语句 \r\n\r\n 13. 15 Drop Database语句 \r\n\r\n 13. 16 Drop Function语句 \r\n\r\n 13. 17 Drop lndex语句 \r\n\r\n 13. 18 Drop Table语句 \r\n\r\n 13. 19 Explain语句 \r\n\r\n 13. 20 Flush语句 \r\n\r\n 13. 2l Grant语句 \r\n\r\n 13. 22 Insert语句 \r\n\r\n 13. 23 Kill语句 \r\n\r\n 13. 24 Lock Tables语句 \r\n\r\n 13. 25 Lad Data lnfile语句 \r\n\r\n 13. 26 Load Table语句 \r\n\r\n 13. 27 Optimize Table语句 \r\n\r\n 13. 28 Purge Master Logs语句 \r\n\r\n 13. 29 RenameTable语句 \r\n\r\n 13. 30 RepairTable语句 \r\n\r\n 13. 31 Replace语句 \r\n\r\n 13. 32 Reset Master语句 \r\n\r\n 13. 33 Reset Slave语句 \r\n\r\n 13. 34 Restore Table语句 \r\n\r\n 13. 35 Revoke语句 \r\n\r\n 13. 36 Rollback语句 \r\n\r\n 13. 37 Selet语句 \r\n\r\n 13. 38 Set语句 \r\n\r\n 13. 39 Set Transaction语句 \r\n\r\n 13. 40 Show Colunms语句 \r\n\r\n 13. 41 Show Create Table语句 \r\n\r\n 13. 42 Show Databases语句 \r\n\r\n 13. 43 Show Grants语句 \r\n\r\n 13. 44 Show Index语句 \r\n\r\n 13. 45 Show Logs语句 \r\n\r\n 13. 46 Show Processlist语句 \r\n\r\n 13. 47 Show Status语句 \r\n\r\n 13. 48 Show Table Status语句 \r\n\r\n 13. 49 Show Tables语句 \r\n\r\n 13. 50 Show Variables语句 \r\n\r\n 13. 51 Slave语句 \r\n\r\n 13. 52 Truncate语句 \r\n\r\n 13. 53 Unlock Tables语句 \r\n\r\n 13. 54 Update语句 \r\n\r\n 13. 55 Use语句 \r\n\r\n 第14章 命令行实用程序 \r\n\r\n 14. 1 环境变量 \r\n\r\n 14. 2 选项文件 \r\n\r\n 14. 3 comp_err \r\n\r\n 14. 4 isamchk \r\n\r\n 14. 5 make_binary_distribution \r\n\r\n 14. 6 msql2mysql \r\n\r\n 14. 7 my_print_defaults \r\n\r\n 14. 8 myisamchk \r\n\r\n 14. 9 myisamlog \r\n\r\n 14. 10 myisampack \r\n\r\n 14. 11 mysql \r\n\r\n 14. 12 mysql_install_db \r\n\r\n 14. 13 mysqlaccess \r\n\r\n 14. 14 mysqladmin \r\n\r\n 14. 15 mysqlbinlog \r\n\r\n 14. 16 mysqlbug \r\n\r\n 14. 17 mysqlc \r\n\r\n 14. 18 mysqld \r\n\r\n 14. 19 mysqld-max \r\n\r\n 14. 20 mysqld-nt \r\n\r\n 14. 2l mysqld-opt \r\n\r\n 14. 22 mysqld-multi \r\n\r\n 14. 23 mysqldump \r\n\r\n 14. 24 mysqldumpslow \r\n\r\n 14. 25 mysqlhotcopy \r\n\r\n 14. 26 mysqlimport \r\n\r\n 14. 27 mysqlshow \r\n\r\n 14. 28 pack_isam \r\n\r\n 14. 29 perror \r\n\r\n 14. 30 replace \r\n\r\n 14. 31 safe_mysqld \r\n\r\n 第15章 CAPI \r\n\r\n 15. 1 类型 \r\n\r\n 15. 2 客户机函数 \r\n\r\n 15. 3 数组函数 \r\n\r\n 15. 4 字符集函数 \r\n\r\n 15. 5 文件函数 \r\n\r\n 15. 6 错误函数 \r\n\r\n 15. 7 散列函数 \r\n\r\n 15. 8 列表函数 \r\n\r\n 15. 9 内存管理函数 \r\n\r\n 15. 10 选项函数 \r\n\r\n 15. 11 密码函数 \r\n\r\n 15. 12 字串函数 \r\n\r\n 15. 13 线程函数 \r\n\r\n \r\n\r\n 第III部分 编写MySQL客户机程序 \r\n\r\n 第16章 C API编程 \r\n\r\n 16. 1 准备编写程序 \r\n\r\n 16. 2 获取数据 \r\n\r\n 16. 3 处理数据 \r\n\r\n 第17章 JDBC \r\n\r\n 17. 1 准备编写程序 \r\n\r\n 17. 2 获取数据 \r\n\r\n 17. 3 处理数据 \r\n\r\n 第18章 VBScript及ODBC \r\n\r\n 18. 1 准备编写程序 \r\n\r\n 18. 2 获取数据 \r\n\r\n 18. 3 处理数据 \r\n\r\n 第19章 PHD \r\n\r\n 19. 1 准备编写程序 \r\n\r\n 19. 2 获取数据 \r\n\r\n 19. 3 处理数据 \r\n\r\n 第20章 PERL \r\n\r\n 20. 1 准备编写程序 \r\n\r\n 20. 2 获取数据 \r\n\r\n 20. 3 处理数据 \r\n\r\n 第21章 PYTHON \r\n\r\n 21. 1 准备编写程序 \r\n\r\n 21. 2 获取数据 \r\n\r\n 21. 3 处理数据 \r\n\r\n 第22章 MySQL++API \r\n\r\n 22. 1 准备编写程序 \r\n\r\n 22. 2 获取数据 \r\n\r\n 22. 3 处理数据 \r\n\r\n \r\n\r\n 第IV部分 高级主题 \r\n\r\n 第23章 数据库管理 \r\n\r\n 23. 1 职责 \r\n\r\n 23. 2 使数据可用 \r\n\r\n 23. 3 维护数据库完整性 \r\n\r\n 23. 4 准备应对灾难 \r\n\r\n 23. 5 支持用户 \r\n\r\n 23. 6 编写并强制执行标准 \r\n\r\n 第24章 物理存储 \r\n\r\n 24. 1 数据库/表模型 \r\n\r\n 24. 2 专用分区 \r\n\r\n 24. 3 表的类型 \r\n\r\n 24. 4 列 \r\n\r\n 24. 5 表锁 \r\n\r\n 24. 6 索引 \r\n\r\n 24. 7 文件描述符 \r\n\r\n 24. 8 系统内存 \r\n\r\n 24. 9 日志文件 \r\n\r\n 第25章 灾难应对 \r\n\r\n 25. 1 检查与修复表 \r\n\r\n 25. 2 备份与恢复 \r\n\r\n 第26章 优化 \r\n\r\n 26. 1 优化之前 \r\n\r\n 26. 2 瓶颈 \r\n\r\n 26. 3 设计优化 \r\n\r\n 26. 4 应用程序内部的优化 \r\n\r\n 26. 5 优化查询 \r\n\r\n 26. 6 优化SQL语句 \r\n\r\n 26. 7 维护表 \r\n\r\n 26. 8 调节服务器配置 \r\n\r\n 26. 9 重新编译MySQL \r\n\r\n 第27章 安全性 \r\n\r\n 27. 1 权限方案 \r\n\r\n 27. 2 设置权限 \r\n\r\n 27. 3 确保安全性 \r\n\r\n 第28章 转换 \r\n\r\n 28. 1 切换数据库服务器 \r\n\r\n 28. 2 把不支持的特性转化到MySQL中 \r\n\r\n 28. 3 使用ANSI模式 \r\n\r\n 28. 4 独一无二的MySQL特性 \r\n\r\n 第29章 分布式数据库 \r\n\r\n 29. 1 分布式数据库的概念 \r\n\r\n 29. 2 被延迟的同步 \r\n\r\n 29. 3 MySQL的复制功能 \r\n\r\n 29. 4 运行多个服务器 \r\n\r\n 第30章 对象映射 \r\n\r\n 30. 1 面向对象模型 \r\n\r\n 30. 2 序列化对象 \r\n\r\n 30. 3 对象-关系映射 \r\n\r\n 第31章 添加功能 \r\n\r\n 31. 1 调试库 \r\n\r\n 31. 2 添加字符集 \r\n\r\n 31. 3 函数 \r\n\r\n 31. 4 过程 \r\n\r\n \r\n\r\n 附录A 在线资源 \r\n\r\n A. 1 官方邮件列表 \r\n\r\n A. 2 邮件列表归档 \r\n\r\n A. 3 Web站点 \r\n\r\n 附录B 进一步阅读 \r\n\r\n 附录C 商务问题与法律问题 \r\n\r\n C. 1 MySQL的许可证 \r\n\r\n C. 2 GNU通用公共许可证 \r\n\r\n C. 3 稳定性 \r\n\r\n C 4 支持 \r\n\r\n 附录D 保留字 \r\n\r\n 附录E MySQL的错误码 \r\n\r\n 附录F SQL样式指南 \r\n\r\n F. 1 一般样式 \r\n\r\n F. 2 标识符 \r\n\r\n F. 3 表 \r\n\r\n F. 4 语句 \r\n\r\n 附录G 数据库设计示例 \r\n\r\n G. 1 示意图 \r\n\r\n G. 2 SQL模式 \r\n
\r\n
Leon Atkinson是《PHP核心编程》一书的作者, 《Zend Technologies》杂志的专栏作家. 他目前正在维护FreeTrade项目(一个采用了MySQL和PHP技术的电子商务工具箱). 自1997年以来, Atkinson为大量Web及电子商务应用程序使用了MySQL技术, 具有丰富的实践经验.
在自己喜欢的两样东西之间做出选择是很困难的. 无论是PHP还是MySQL, 多年来 都提供了令人愉悦的Web应用程序编程体验. 但我首先写的是PHP. 自《Core PHP Pro— gramming》一书出版以来, 我亲眼目睹了PHP的逐渐流行. 两年后, 我终于有时间来写作 本书. MySQL和PHP是水乳交融的两个工具. 我希望你会发现本书是我的前一本书的有价值的姊妹篇.
你可能已经注意到本书封面上的MySQL微标, 这代表着本书两个重要的特点. 首先, Monty Widenius和Kaj Arno已在本书出版之前以个人名义审阅了它. 这样便保证了书中的信息有很高的价值. 其次, MySQL AB公司也将从本书的销售中获利. 这意味着通过购买本书, 你将为MySQL的后续开发贡献出力量.
通过其他渠道来支持MySQL的开发是非常重要的. 你可能是以GNU Public License的名义获得MySQL, 这意味着为此花的钱是微不足道的. 此外, 更重要的是, 你有权修改源代码, 并同其他人分享你所做的修改, 只要一切都遵守许可证制定的规则. 尽管开放源代码软件模型并不是什么新东西, 但它确实是最近才流行起来的. MySQL朋和传统的软件公司不同, 不能靠出售打包软件来赢利. 由于任何人都可出于不同的目的而下载和使用
MySQL, 所以MySQL AB公司要通过提供与产品相关的卓越服务来维持赢利.
本书从一般意义上描述了关系型数据库, 具体的讨论则围绕MySQL展开. 我希望这样的写作思路能被所有聪明的. 敢于接受新思想的读者理解. 你无需有任何数据库经验, 但应该理解如何操作现代化的计算机. 要学习MySQL, 你应该会安装软件, 并会使用计算机的命令行shell. 当然, 稍微有一些编程经验更好.
我设想你会经常参考本书, 所以在书的中间位置安排了一个函数和命令参考. 之所以这样做, 是因为你可能经常性地将书摊开, 从中查找需要的函数和命令. 另外, 我会尽可能地简化文字. 一本印刷好的书应该能够方便读者自行控制阅读速度, 并可在任何时候回过头去重新阅读. 因此, 我极少重复讲过的内容.
本书第I部分从常规意义上描述了关系型数据库. 第1章为那些没有经验的读者简要介绍了数据库, 然后讨论了安装以及同服务器的交互. 第I部分的其他章则探讨了数据库功能的细节, 其中包括SQL语言.
第II部分是对MySQL所支持的命令与实用程序的一个完全参考. 信息涉及到数据类型. 变量和运算符. 在这一部分, 你可找到针对每个函数. SQL命令和实用程序的说明. 第15章讨论了用于同MySQL交互的C API.
第111部分讨论了几种流行的编程语言, 并描述了同一个MySQL服务器交互的过程. 在此涉及的语言包括C, C++, Java, Perl,PHP, VBScript以及Python. 这些章的讨论是假定读者已经非常熟悉这些语言.
最后一部分讲解了一些高级主题, 其中讨论了MySQL对物理资源的使用情况, 以及如何对服务器进行管理. 此外, 还讨论了复制. 对象映射以及编写自己的SQL函数.
本书的讲解统一基于MySQL版本3. 23, 这是我写作本书时最新的稳定版本. 在写作过程中, 还发布了几个小的版本升级, 书中也将它们包含在内. ’读者读到本书时, MySQL4. 0可能已经成为稳定版本发布. 所以, 我在书中对3. 23可能发生改变的功能进行了说明.
致 谢
本书的面世, 离不开我的妻子Vicky. 她不仅是一名出色的技术编辑, 还不断地给予我鼓励. 理解和支持.
除了Vicky之外, 在此我还要感谢另外几名优秀的技术编辑. Dan Staten和Dan Liv—ingston从非专业的角度提供了出色的反馈意见. Monty Widenius和Kaj Arno虽然工作很忙, 但都为我提供了详细而深刻的意见. 我还要感谢Sinisa Milivojevic, 她和我一起对MySQL++API进行了颇有助益的讨论.
同Mark Taub和Prentice Hall合作令人愉快. 尤其高兴的是, 我拥有较大的自由来安排本书的结构. 另外, 非常高兴Mark批准了我同MySQL AB的会面. 这正是开放源代码社区的精神.