MySQL是使用最广泛的开源数据库系统,这主要有以下几个原因:
q MySQL很快。
q MySQL很稳定。
q MySQL很容易学习。
q MySQL可以在各种主流的操作系统(Windows、Linux、Mac OS X和各种UNIX版本)上运行。
q MySQL应用软件可以用多种程序设计语言(如C、C++、C#、Java、Perl、PHP、Python、Visual Basic和Visual Basic.NET等)来编写。
q 网上有详尽的MySQL文档,与MySQL有关的书籍也非常多。
q 有许多应用项目都允许用户免费使用MySQL来开发(在遵守GPL许可证制度的前提下)。
q 虽然也有许多商业化的应用软件不受GPL许可证的约束,但只需支付一些合理的费用就可以获得商业许可证和各种可选的技术支持服务合同。
MySQL正在数据库市场上重演Linux在操作系统领域逐步取得成功的故事。PHP或Perl语言与MySQL相结合的数据库系统解决方案被越来越多的网站所采用。其中又以“Linux + Apache + MySQL + Perl或PHP”的组合方式最为流行,这种组合被人们称为LAMP模式。MySQL并不仅仅适用于小型网站,连Yahoo!、Slashdot和美国航空航天局等数据量非常大的公司和机构也在使用它。
本书内容
本书面向应用和面向示例对MySQL数据库系统进行了全面系统的介绍。读者无需具备SQL编程或数据库设计的经验。
本书的入门部分将从如何在运行Windows和Linux操作系统的计算机上安装MySQL、Apache、PHP和Perl等软件组件的具体步骤开始展开讨论。此外,还将介绍如何安装需要与MySQL配合使用的其他组件。在此基础上的第一个示例将向大家演示MySQL和PHP的基本用法。
本书的第二部分将对mysql、mysqladmin、mysqldump、MySQL Administrator、MySQL Query Browser和phpMyAdmin等几个最为重要的系统管理工具和用户操作界面进行介绍,最后一个程序特别适合使用Web浏览器以离线方式来完成各种系统管理工作的情况。在这一部分还将专门用一章的篇幅来讨论如何通过Microsoft Office、Sun StarOffice和OpenOffice访问MySQL数据库。
本书的第三部分为读者准备了大量有关数据库语言SQL、数据库系统的设计思路、存储过程、MySQL的访问控制系统和多种系统管理工作(如备份、日志和镜像等)的背景资料。
本书的第四部分将重点介绍PHP语言,其中有一章内容很长,读者可以学到许多程序设计方面的技巧。将通过一系列示例程序来演示如何利用mysql和mysqli(PHP 5里新增加的软件工具)程序提供的操作界面去完成各项系统管理任务;还将介绍其他几种程序设计语言,将在专门的章节里对Perl、Java、C、Visual Basic 6以及Visual Basic.NET和C#等语言进行讨论。
本书的主要内容将以参考资料篇(第五部分)作为结束,将对MySQL所支持的各种SQL命令、常见MySQL系统管理工具的功能选项及几种重要的程序设计语言(PHP、Perl、C、Java、ADO .NET)所提供的接口函数进行总结。
最后是附录,其内容涉及术语解释(附录A),对书里提到的各个示例文件的介绍(附录B,有关文件都可以从www.apress.com网站下载),以及帮助大家进一步掌握MySQL的参考读物和建议(附录C)。
我们相信,本书里的示例数据库和示例程序能够帮助那些打算自行开发一个数据库应用软件的读者打下一个坚实的基础。在这里,预祝大家能够从中获得乐趣和成功。
本书(第3版)新增内容
本书在第2版的基础上进行了大量的改写。大部分改动反映了MySQL服务器从4.1版到5.0版的变化。围绕着MySQL相关领域做出的改动也有不少,其中包括新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。最为重要的新增内容如下所示。
MySQL从4.1到5.0的变化
q 增加对Unicode和其他新字符集的支持(新增和改动之处详见书中各有关内容)。
q 视图(在第8章中新增了一个小节)。
q INFORMATION_SCHEMA数据表(在第9章中新增了一个小节)。
q 子查询(在第10章中新增了一个小节)。
q 经过改进的密码验证机制和访问控制管理方面的新增权限(第11章)。
q GIS函数(新增的第12章)。
q 存储过程和触发器(新增的第13章)。
q 对InnoDB数据表进行维护管理的新办法(在第14章中新增了一个小节)。
q 各种新的SQL命令、函数、数据类型(新增和改动之处详见书中各有关内容,第21章对它们进行了汇总)。
q MySQL服务器和它的各种系统管理工具的新增功能选项(新增和改动之处详见书中各有关内容,第21章对它们进行了汇总)。
相关领域中的变化
q MySQL Administrator和MySQL Query Browser(新增的第5章)。
q phpMyAdmin工具中的许多新增功能(新增的第6章)。
q OpenOffice / StarOffice中的数据库接口(在第7章中新增了一节)。
q PHP 5里的mysqli工具,这是一个面向对象的接口(新增的第15章、第23章对它们进行了汇总)。
q C-API中的新增函数(第18章、第23章对它们进行了汇总)。
q 新的ADO .NET驱动程序集Connector/Net(第20章、第23章对它们进行了汇总)。
本书没有涉及的内容
在本书的各有关章节里,分别讨论了如何运用PHP、Perl、C、Java和Visual Basic等多种程序设计语言编写MySQL应用软件的问题。那些章节里的内容是在读者对相应的程序设计语言已经比较熟悉的假设下展开的——原因很简单:本书没有足够的篇幅从入门开始对那么多种程序设计语言进行介绍。换句话说,读者只有在自己已经熟练掌握(比如PHP语言)的前提下才能从专门讨论PHP编程技巧的有关章节里获得最大的收益。
示例程序、源代码
书中所有示例程序的源代码都可以通过www.turingbook.com和www.apress.com网站下载。
在这本书里,读者会在一些比较长的示例程序清单的开头看到一个如下所示的注释行,它给出了该示例文件在上述网站上的文件名,比如:
![]()
出于节约篇幅的考虑,在书中有时只给出了整段程序代码中最精彩的片段。
软件版本问题
MySQL本身以及各种工具程序、程序设计语言和相关函数库的功能会随着它们各自的每一个新版本的出现而发生变化——这些变化每个星期都有可能发生。下面这份清单是笔者在编写这本书时使用的各种软件的版本明细(对这些软件名称的解释详见书中的适当位置)。
Apache:2.n版。
Connector/J:3.1.7版和3.2.0版。
Connector/ODBC(以前叫做MyODBC):3.51.11版。
gcc:3.3版。
Java:1.4.2版和1.5.0版。
Linux:本书中的MySQL工具和其他程序都已经在Windows和Linux环境下通过了测试。我们的Linux测试环境使用的是Red Hat Enterprise 4和SUSE Professional 9.2和9.3 beta发行版本。
Microsoft Office:Office 2000。
Microsoft Visual Basic、VBA、ADO:书中的Visual Basic程序是在Visual Basic 6、VBA 6和ADO 2.8环境下开发和测试的。
Microsoft Visual Basic .NET、C#、ADO.NET:与这几个方面有关的信息主要以Visual Studio 2005 beta版(即.NET Framework 2.0)为依据。
Microsoft Windows:Windows环境下的测试工作全都是在Windows XP SP2系统上完成的。从理论上讲,有关信息应该同样适用于Windows 2000和未来的Windows版本。
MySQL:5.0.3版。
OpenOffice:2.0 beta版。
Perl:5.8版。
PHP:5.0版和5.3版。
phpMyAdmin:2.6.1版。
印刷体例
q SQL命令、SQL函数以及SQL、C、Java、PHP、Perl、Visual Basic等语言里的各种函数方法、类和关键字主要以斜体字表示(例如:SELECT、mysql_query)。
q UNIX/Linux用户名也以斜体字表示(例如:root、mysql)。
q 菜单命令使用首字母大写字体表示(例如:File | Open)。
q 文件名和子目录名使用代码体表示(例如:/usr/local 或 C:\Windows)。
q 程序名和编程命令也以代码体表示(例如:mysql 或 cmd.exe)。
q 程序清单和命令行输入也以代码体表示。
此外,书中的SQL命令通常以大写字体写出。这不是一项语法规定,而是一种习惯。MySQL在解释SQL命令的时候并不区分字母的大小写形式。
在需要给出一个Windows目录的时候,通常不会给出一个绝对路径,这是因为它将取决于具体的安装情况。我们将采用以下几种表示方法:
Windows\ 代表Windows的安装目录(例如:C:\Windows 或 D:\WinNT4)。
Programs\ 代表Windows上的软件安装目录(例如:C:\Programs或D:\Program Files)。
Mysql\ 代表MySQL的安全目录(例如:C:\Program Files\Mysql)。
命令
本书里将会出现很多命令。通常会对比给出有关命令在UNIX/Linux和Windows两种环境中的不同写法。下面两条命令就是等价的:
![]()
请大家根据不同的系统提示符来区分这些命令的适用场合(root#表示适用于UNIX/Linux, >表示适用于Windows)。在输入命令时,只需输入系统提示符后面的文字(即黑体字部分)。在UNIX/Linux系统上,比较长的输入内容可能会被分断为几个输入行。这些输入行是用反斜线字符(\)分断的,在书中经常会遇到这样的情况。下面这条命令与上面给出的第一条命令等价:
![]()
请注意,在输入有关命令时别忘了把“xxx”替换为具体的文字(具体到上面这个例子,需要把“xxx”替换为密码)。为了表明“xxx”是一个哑元参数,将在书中把它写为斜体字。
缩略语
笔者已经尽最大可能不在这本书里使用缩略语,但有些早已约定俗成的缩略语还是会不可避免地反复在书中出现。下表中所列的缩略语在各章的讨论内容里将不再进行解释。
|
缩略语 |
含 义 |
|
ADO |
Active Data Object(活动数据对象),微软公司的数据库函数库 |
|
ADO.NET |
ADO for .NET(.NET活动数据对象),与ADO不兼容 |
|
BLOB |
Binary Large Object(二进制大对象),二进制的数据块 |
|
GIS |
Geographical Information System(地理信息系统) |
|
GPL |
GNU Public License(GNU公共许可证),开源软件普遍采用的一种软件许可证制度 |
|
HTML |
HyperText Markup Language(超文本标记语言),一种用来描述Web文档的计算机语言 |
|
InnoDB |
这不是一个缩略语。InnoDB是一家公司的名字,该公司为MySQL数据库开发了一种特殊的数据表格式,该格式的名字也叫做InnoDB |
|
ISP |
Internet Service Provider(因特网接入服务提供商) |
|
MySQL |
这是一家公司的名字,该公司开发了MySQL数据库系统 |
|
ODBC |
Open Database Connectivity(开放数据库互连标准),它是一组为了让不同厂商推出的数据库产品能够相互兼容而制定的标准化数据库访问接口(尤其流行于Windows环境下) |
|
PHP |
PHP Hypertext Preprocessor(PHP超文本预处理器),一种用来生成和处理HTML页面的脚本程序设计语言 |
|
RPM |
Red Hat Packet Manager(Red Hat软件包管理器),Linux软件包的一种打包格式 |
|
SQL |
Structured Query Language(结构化查询语言),一种数据库程序设计语言 |
|
URL |
Uniform Resource Locator(统一资源定位器),即http://www.company.com/page.html格式的因特网地址 |
|
VB |
Visual Basic,一种程序设计语言 |
|
VBA |
Visual Basic for Applications,Microsoft Office软件包内嵌的程序设计语言 |
|
VBA.NET |
Visual Basic for Applications for .NET,Microsoft Office软件包内嵌的程序设计语言 |





