第1部分 MySQL基础 1
第1章 MySQL简介 1
1.1 廉价的数据库——MySQL 1
1.2 什么是MySQL 4
1.3 MySQL的主要特征 4
1.4 MySQL提供的工具 6
1.5 稳定的MySQL 6
1.6 MySQL入门 8
1.7 有用的MySQL链接 13
第2章 MySQL的安装和基本配置 14
2.1 MySQL支持的操作系统 14
2.2 MySQL版本选择 15
2.3 安装流程 15
2.4 安装MySQL二进制代码分发 16
2.4.1 Linux RPM注意事项 18
2.4.3 系统特定的问题 19
2.4.2 构造客户程序 19
2.5 安装MySQL源代码分发 20
2.5.1 快速安装概述 21
2.5.2 运用补丁 22
2.5.3 典型的configure选项 23
2.6 编译问题 24
2.7 Perl安装 26
2.7.1 在Unix上安装Perl 26
2.7.3 在Win32上安装MySQL Perl分发 27
2.7.2 在Win32上安装ActiveState Perl 27
2.7.4 使用PerlDBI/DBD接口的问题 28
2.8 Windows系统中安装的注意事项 29
2.8.1 在Win32上安装MySQL 29
2.8.2 在Windows 95/Windows 98上启动MySQL 29
2.8.3 在NT上启动MySQL 30
2.8.4 在Win32上运行MySQL 30
2.8.6 MySQL-Win32与Unix MySQL比较 32
2.8.5 用SSH连接一个远程MySQL 32
2.9 安装后期的设置和测试 34
2.9.1 运行mysql_install_db的问题 36
2.9.2 启动MySQL服务器的问题 38
2.9.3 自动启动和停止MySQL 39
2.9.4 选项文件 40
2.10 在不同版本之间移动MySQL表格 42
2.10.1 从3.22版本升级到3.23 42
2.10.2 从3.21版本升级到3.22 43
2.10.3 从3.20版本升级到3.21 43
2.10.4 升级到其他体系结构 44
第3章 MySQL的使用 46
3.1 连接与断开服务器 46
3.2 输入查询 47
3.3 常用查询的例子 50
3.3.1 列的最大值 50
3.3.3 组的最大值 51
3.3.2 拥有某个列的最大值的行 51
3.3.4 拥有某个字段的组间最大值的行 52
3.3.5 使用外键 53
3.4 创建并使用一个数据库 54
3.4.1 创建并选用一个数据库 55
3.4.2 创建一个数据库表 56
3.4.3 将数据装入数据库表 57
3.4.4 从一个数据库表检索信息 58
3.4.5 使用多个数据库表 71
3.5 获得数据库和表的信息 72
3.6 用批处理模式使用MySQL 73
3.7 项目查询(实例) 74
3.7.1 找出所有非独处的双胞胎 75
3.7.2 显示关于双胞胎近况的表 77
4.1.1 字符串 81
4.1 字符串和数字 81
第4章 用MySQL处理数据 81
第2部分 MySQL的配置 81
4.1.2 数字 82
4.1.3 十六进制值 83
4.1.4 NULL值 83
4.1.5 数据库、表、索引、列和别名的命名 83
4.2 用户变量 85
4.3 列类型 85
4.3.1 列类型存储需求 88
4.3.2 数字类型 88
4.3.3 日期和时间类型 89
4.3.4 串类型 89
4.3.5 数字类型 90
4.3.6 日期和时间类型 91
4.3.7 字符串类型 96
4.3.9 列索引 100
4.3.10 多列索引 100
4.3.8 为列选择正确的类型 100
4.3.11 使用来自其他数据库引擎的列类型 101
4.4 用在SELECT和WHERE语句中的函数 102
4.4.1 分组函数 102
4.4.2 常用的算术操作 102
4.4.3 位函数 103
4.4.4 逻辑运算 104
4.4.5 比较运算符 105
4.4.6 字符串比较函数 108
4.4.7 类型转换运算符 110
4.4.8 控制流函数 110
4.4.9 数学函数 111
4.4.10 字符串函数 116
4.4.11 日期和时间函数 123
4.4.12 其他函数 131
4.4.13 与GROUP BY子句一起使用的函数 134
4.5.1 CREATE DATABASE句法 135
4.5 句法 135
4.5.3 CREATE TABLE句法 136
4.5.2 DROP DATABASE句法 136
4.5.4 ALTER TABLE句法 141
4.5.5 OPTIMIZE TABLE句法 143
4.5.6 DROP TABLE句法 143
4.5.7 DELETE句法 144
4.5.8 SELECT句法 144
4.5.9 JOIN句法 147
4.5.10 INSERT句法 148
4.5.11 REPLACE句法 151
4.5.12 LOAD DATA INFILE句法 151
4.5.13 UPDATE句法 156
4.5.14 USE句法 156
4.5.16 KILL句法 157
4.5.17 SHOW句法(得到表、列的信息) 157
4.5.15 FLUSH句法(清除缓存) 157
4.5.18 EXPLAIN句法(得到关于SELECT的信息) 162
4.5.19 DESCRIBE句法(得到列的信息) 166
4.5.20 LOCK TABLES TABLES句法 167
4.5.21 SET OPTION句法 168
4.5.22 GRANT和REVOKE句法 169
4.5.23 CREATE INDEX句法 171
4.5.24 注释句法 172
4.5.25 CREATE FUNCTION FUNCTION句法 172
第5章 MySQL客户工具和API 174
5.1 MySQL C API 174
5.1.1 C API数据类型 175
5.1.2 C API函数概述 177
5.1.3 C API函数描述 180
5.2 MySQL Perl API 210
5.2.1 DBI与DBD 210
5.2.2 DBI接口 211
5.2.3 更多的DBI/DBD信息 216
5.3 MySQL PHP API 217
第6章 MySQL服务器功能 218
6.1 字符集 218
6.1.1 用于数据和排序的字符集 218
6.1.2 增加一个新的字符集 218
6.1.3 多字节字符支持 219
6.3 MySQL数据库表容量 220
6.2 更新日志 220
6.4 MySQL数据库表类型 221
第7章 优化MySQL 223
7.1 优化概述 223
7.2 系统/编译时和启动参数的调节 223
7.2.1 编译和链接影响MySQL的速度 224
7.2.2 磁盘问题 224
7.2.3 调节服务器参数 225
7.2.6 许多打开的表 229
7.2.4 MySQL怎样打开和关闭数据库表 229
7.2.5 在同一个数据库中创建大量数据库表的缺点 229
7.2.7 MySQL怎样使用内存 230
7.2.8 MySQL怎样锁定数据库表 231
7.3 最小的数据量 232
7.4 MySQL索引的使用 232
7.5 存取或更新数据的查询速度 234
7.5.1 估计查询性能 234
7.5.2 SELECT查询的速度 235
7.5.3 MySQL怎样优化WHERE子句 235
7.5.4 MySQL怎样优化LEFT JOIN 237
7.5.5 MySQL怎样优化LIMIT 237
7.5.6 INSERT查询的速度 237
7.5.7 UPDATE查询的速度 239
7.5.8 DELETE查询的速度 239
7.6 选择一种表类型 239
7.6.2 动态表的特点 240
7.6.1 静态(定长)表的特点 240
7.6.3 压缩表的特点 241
7.6.4 内存表的特点 242
7.7 其他优化技巧 242
7.8 设计选择 244
7.9 可移植性 244
第8章 MySQL的维护 246
8.1 MySQL实用程序 246
8.1.1 各种MySQL程序概述 246
8.1.2 管理MySQL服务器 248
8.1.3 从MySQL数据库和表中导出结构和数据 249
8.1.4 从文本文件导入数据 251
8.1.5 MySQL压缩只读表生成器 253
8.2 为MySQL增加新函数 260
8.2.1 增加一个新的用户定义函数 260
8.2.2 增加一个新的原生函数 265
8.4.3 已知可用MyODBC工作的程序 266
8.4.2 怎样报告MyODBC的问题 266
8.3 为MySQL增加新过程 266
8.4.1 MyODBC支持的操作系统 266
8.4 MySQL对ODBC的支持 266
8.4.4 怎样填写ODBC管理程序的各种域 268
8.4.5 怎样在ODBC中获得一个AUTO_INCREMENT列的值 269
8.4.6 报告MyODBC的问题 269
8.5 与Apache一起使用MySQL 270
第9章 MySQL常见问题的解决 271
9.1 解决MySQL系统崩溃 271
9.2 使用MySQL时一些常见的问题 272
9.2.1 MySQL server has gone away错误 272
9.2.2 Can t connect to [local]MySQL server错误 273
9.2.3 Host ... is blocked错误 274
9.2.4 Too many connections错误 274
9.2.8 Commands out of sync in client错误 275
9.2.7 The table is full错误 275
9.2.5 Out of memory错误 275
9.2.6 Packet too large错误 275
9.2.9 Ignoring user错误 276
9.2.10 Table xxx doesn t exist错误 276
9.2.11 处理一个溢出的磁盘 276
9.2.12 如何从一个文本文件运行SQL命令 277
9.2.13 MySQL存储临时文件的位置 277
9.2.14 怎样保护“/tmp/mysql.sock”不被删除 277
9.2.15 一般用户运行MySQL 278
9.2.16 重新设置一个忘记的口令 278
9.2.17 文件许可权限问题 279
9.2.18 文件没找到 279
9.2.19 使用DATE列的问题 280
9.2.20 在搜索中对大小写的敏感性 280
9.2.21 NULL值问题 281
9.2.24 解决没有匹配行的问题 282
9.2.23 从关联的表中删除行 282
9.2.22 Alias问题 282
9.2.25 与ALTER TABLE有关的问题 283
9.2.26 改变一张表中列的顺序 283
9.3 用MySQL解决一些常见问题 284
9.3.1 数据库复制 284
9.3.2 数据库备份 284
9.3.3 在同一台机器上运行多个MySQL服务器 285
第3部分 MySQL管理 289
第10章 MySQL管理基础 289
10.1 管理职责概述 289
10.2 常规管理 290
10.3 数据库修复 291
10.3.1 使用myisamchk进行表的维护和崩溃恢复 291
10.3.2 建立一个数据库表维护规范 293
10.3.3 获得关于一个表的信息 294
10.3.4 使用myisamchk进行崩溃恢复 300
10.3.5 日志文件维护 302
第11章 MySQL的安全性 304
11.1 权限系统做什么 304
11.2 MySQL用户名和口令 304
11.3 与MySQL服务器连接 304
11.4 口令安全 305
11.5 MySQL提供的权限 306
11.6 权限系统工作原理 308
11.7 存取控制——连接证实(阶段1) 310
11.8 存取控制——请求证实(阶段2) 313
11.9 权限更改何时生效 315
11.10 建立初始的MySQL权限 315
11.11 向MySQL增加新用户权限 316
11.12 设置口令 319
11.13 Access denied错误的原因 319
11.14 对抗解密高手 322
第12章 MySQL中实现用户管理 324
12.1 授权机制的主要作用 324
12.2 授权机制的运作 324
12.3 授权数据表 326
12.4 最常见的Access denied出现错误的原因 327
12.5 如何使得MySQL更加安全 328
第13章 用PHPMyAdmin管理MySQL数据库 329
13.1 设置中文界面 329
13.2 建立数据库 330
13.3 编辑数据库 330
第14章 实现qmail邮件账户的数据库管理(实例) 331
14.1 MySQL的安装 331
14.2 vpopmail的安装过程 333
14.3 vpopmail的详细配置选项 334
14.4 Qmail和虚拟域 336
14.5 安装过程 337