[翻译]MySQL5.0用户手册——第三章:快速入门

前一段时间翻译了第一章的部分内容,可是人气不旺,可能是因为第一章讲概论性的东西提不起大家的兴趣吧。
第二章是讲怎样安装MySQL的,kai已经开始翻译这章,我就不重复劳动了。
所以我决定翻译第三章,来点实质性的东西。希望大家多多捧场。




目录


3.1. 连接服务器和断开连接 
3.2. 输入查询语句 
3.3. 创建和使用数据库 
3.3.1. 创建和选择一个数据库 
3.3.2. 创建一个表 
3.3.3. 向表中载入数据 
3.3.4. 从表中提取数据 
3.4. 获得关于数据库的表格的信息 
3.5. 在批处理模式下使用 mysql 
3.6. 常用示例 
3.6.1. 查询一列的最大值 
3.6.2. 查询一列的最大值所在的行的数据 
3.6.3. 查询一列中每一组的最大值 
3.6.4. 查询一列中每一组的最大值所在的行的数据 
3.6.5. 使用自定义变量 
3.6.6. 使用外键 
3.6.7. 根据两个键查询 
3.6.8. 计算每天的访问量 
3.6.9. 使用自动增量 
3.7. 在Twin Project中查询数据 
3.7.1. 寻找所有未分开的双胞胎 
3.7.2. 显示一个表示每一对双胞胎的地位的表 
3.8. 在Apache中使用MySQL 
章提供了一个教程,该教程演示了如何通过mysql 客户端程序来创建和使用一个简单的数据库。mysql (有时候称作 “终端监视器” 或简称为 “监视器”) 是一个允许你连接到一个MySQL Server、运行查询和查看看结果的交互程序。mysql 也可以以批处理方式运行: 你可以把查询语句预先写到一个文件中,然后让mysql 执行该文件的内容。 使用mysql 的两种方法这里都会讲到。 


以--help 选项启动mysql,可以查看它提供了哪些选项:


shell> mysql --help
本章假设mysql 已经安装在你的机器上并且有一个可用的MySQL服务器能够连接, 否则请联系你的 MySQL 管理员。 (如果你就是管理员,请阅读本手册的相关章节,如Chapter 5, Database Administration。) 


这一章描述了建立和使用一个数据库的全过程, 如果你仅仅对存取一个已经存在数据库感兴趣, 可以跳过介绍创建数据库和创建表的章节。


因为本章本质上是一个教程,所以许多细节已被省略。如果需要获得更多信息,请查看本手册的相关章节。 


3.1. 连接服务器和断开连接
在使用mysql连接服务器的时候,你通常需要提供一个 MySQL 用户名,很有可能还需要一个密码;如果服务器运行在远程主机上,你还需要指定主机名。联系你的管理员以找出你应该使用什么样的连接参数 ( 即,那个主机,用户名和密码 )。一旦你知道正确的参数,你应该这样连接:


shell> mysql -h host -u user -p
Enter password: ********
host 和 user 代表MySQL 服务器运行的主机名 和你的 MySQL 帐户的用户名,请替换为适当的值。 ******** 代表你的密码;当 mysql 显示 Enter password: 提示时输入它。


如果连接成功,你将看到mysql> 提示符后面显示一些介绍信息:


shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.0.19-standard


Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql>
mysql> 提示符说明mysql 已经准备好,你可以输入命令。


如果你是在运行 MySQL服务器的机器上登陆, 你可以省略主机名,如下:


shell< mysql -u user -p
如果你试图连接的时候得到如下错误信息ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2),这说明MySQL服务器守护进程(Unix) 或服务 (Windows) 没有运行,请 联系管理员或者查看Chapter 2, Installing MySQL 来解决问题。 


获得登录时遇到的常见问题的帮助, 请查看 Section A.2, “Common Errors When Using MySQL Programs”. 


有些MySQL安装后可以允许用户在本机上匿名登录, 如果你的机器时这种情况,你可以不带任何参数运行mysql来连接服务器:


shell> mysql
连接成功后,可以输入QUIT (或者\q) 命令断开与服务器的连接:


mysql> QUIT
Bye
在Unix系统, 也可以通过按下 Control-D来断开连接。


下面章节的大部分例子都假设你已经连接到服务器,mysql> 提示符指明这一点。
3.2. 输入查询语句
确信你已经按照前面的方法连接到服务器。 连接服务器的时候没有选择要操作哪一个数据库,从这点上讲,学会如何发出查询比直接跳到创建表、载入数据和读出数据要重要些。这一章描述了输入命令的基本原则,输入几个查询语句,自己体会一下mysql 如何工作。


下面是一个简单的命令,要求服务器告诉你它的版本号和当前日期。在 mysql> 提示后输入命令并按回车键: 


mysql> SELECT VERSION(), CURRENT_DATE;
+----------------+--------------+
| VERSION()      | CURRENT_DATE |
+----------------+--------------+
| 5.0.7-beta-Max | 2005-07-11   |
+----------------+--------------+
1 row in set (0.01 sec)
mysql>
这个查询说明如下几点:


一个命令通常由一个SQL语句和一个分号组成。(一些特殊的情况下,分号也可以省略,比如QUIT就是其中一个,其它的情况以后还会遇到。) 
当你发出一个命令,mysql 把它发送到服务器执行并显示结果, 然后显示mysql> 提示符指明可以输入下一条命令。
mysql 以表格形式显示查询的结果, 第一行是每一列的标志,后面的行是查询结果。 通常,列标志是你从数据库中取出的数据的列名, 如果你查询的值是一个表达式的运算结果(如下面的例子),mysql 会使用这个表达式作为这一列的标志。 
mysql 显示有多少行数据返回和执行这个查询花了多少时间,让你对服务器的性能有一个初步的印象。这些值是不精确的,因为它代表的是时钟时间 (而不是CPU 时间或机器时间),它会受到服务器负载量和网络延时的影响。(为了简洁起见,下面的例子中有时将不再显示 “rows in set”这一行。) 
关键字不区分大小写,下面的语句是等价的: 
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
下面的查询语句说明可以把mysql 当成一个简单的计算器:


mysql> SELECT SIN(PI()/4), (4+1)*5;
+------------------+---------+
| SIN(PI()/4)      | (4+1)*5 |
+------------------+---------+
| 0.70710678118655 |      25 |
+------------------+---------+
1 row in set (0.02 sec)
到目前,我们演示的都是简单的,单行的语句,其实也可以在同一行中输入多条语句,每个语句以分号隔开:


mysql> SELECT VERSION(); SELECT NOW();
+----------------+
| VERSION()      |
+----------------+
| 5.0.7-beta-Max |
+----------------+
1 row in set (0.00 sec)


+---------------------+
| NOW()               |
+---------------------+
| 2005-07-11 17:59:36 |
+---------------------+  
1 row in set (0.00 sec)
一个命令也不是非要在一行里面输完,把一个语句分成多行输入是没有问题的,mysql 使用分号代表一个语句的结束,而不是把一行当成一个语句。 (换句话说,mysql 接受非常自由的输入, 它收集所有的输入知道看到分号的时候才执行。) 


这是一个简单的多行语句:


mysql> SELECT
    -> USER()
    -> ,
    -> CURRENT_DATE;
+---------------+--------------+
| USER()        | CURRENT_DATE |
+---------------+--------------+
| jon@localhost | 2005-07-11   |
+---------------+--------------+
在这个例子中,你可以注意到输入一行未完成的命令后, mysql 的提示符从mysql>变成了->,指明命令没有输完。 提示符是我们的朋友,它提供非常有价值的反馈信息,通过这些信息,我们可以知道mysql 期待什么输入。


如果一个命令输入了一部分,你却不想执行了的话,可以键入\c取消:


mysql> SELECT
    -> USER()
    -> \c
mysql>
在这里,也请注意提示符的变化, 在输入 \c之后,提示符又变回mysql>, 提供反馈说明mysql 可以接受新的命令。


下面的表格总结了所有mysql 的提示符的意义: 


提示符 意义 
mysql> 准备接受新命令。 
-> 等待一个多行命令的下一行。 
'> 等待一个以单引号 (‘'’)开始的字符串的下一行。 
"> 等待一个以单引号 (‘"')开始的字符串的下一行。 
`> 等待一个以backtick (‘`’)开始的标识符的下一行。 
/*> 等待一个以/*开始的注释的下一行。 


在 MySQL 5.0 系列中, /*> 提示符从 MySQL 5.0.6版开始提供。


我们经常会意外的遇到多行命令的情况,那就是当我们输入一行语句后却忘记了输入分号。在这种情况下,mysql等待下一行的输入:


mysql> SELECT USER()
    ->
如果你遇到这种情况 (你认为你已经输完一个语句却只得到一个-> 提示符),极有可能就是mysql 正在等待分号。 如果你没有注意到提示符的变化,你可能就会傻坐着等。 只要输入一个分号结束语句,mysql 就会执行它:


mysql> SELECT USER()
    -> ;
+---------------+
| USER()        |
+---------------+
| jon@localhost |
+---------------+
'> 和 "> 在输入字符串的时候有时会出现 (换一句话说 MySQL 正在等待未完成的字符串)。 在MySQL中,你可以使用 ‘'’ 或 ‘"’字符来输入字符串 (比如,'hello' 或 "goodbye"),而且mysql 能够让你输入多行的字符串。 当你看到一个 '> 或 "> 提示符时,意味着你已经输入了字符串开头的引号,还没有输入结尾的引号,如果你确实正在输入一个多行字符串,很好,但是果真如此吗?不尽然。更常见的, '> 和 "> 提示符显示你粗心地漏掉了一个引号字符。例如: 


mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '>
如果你输入该 SELECT 语句,然后按回车键并等待结果,什么都没有出现。“为什么 该查询这么长呢?”,注意 "> 提示符提供的线索。它告诉你 mysql 期望见到一个未终止字符串的 余下部分。(你在语句中看见错误吗?字符串 "Smith 正好缺少第二个引号。) 


在这种情况下,该怎么办?最简单的方法就是取消命令的执行, 但是,却不能简单地只输入\c ,因为MySQL会认为这是字符串未完成的部分, 相反,我们应该先输入一个引号 (这样就可以告诉mysql 字符串我们已经输完了)然后再输入\c:


mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '> '\c
mysql>
提示符又变成了mysql>,说明mysql 可以接受下一条命令。


`> 提示符和'> 以及">提示符相似, 只不过指明的是你没有完成acktick-quoted 标识符的输入。


知道'>, ">,和`> 的标识符的意义是非常重要的, 为如果你错误地输入一个未终止的字符串,你下一步输入的任何行好象都将要被mysql忽略 — 包括包含QUIT命令的行。 如果你不知道在输入其它命令之前好要先中止引号的话,这将搞得你一头雾水。
.3. 创建和使用数据库
3.3.1. 创建和选择一个数据库 
3.3.2. 创建一个表 
3.3.3. 向表中载入数据 
3.3.4. 从表中提取数据 
现在已经知道了怎样输入命令,是操作数据库的时候了。


假设你家(动物园)里有许多宠物,并且你希望能够跟踪它们的信息,你可以创建一个表,把你需要的信息输入表中,通过从表中提取数据,你就可以回答关于你的宠物的各种各样的问题。这一节将演示怎样做到下面的这些事情:


创建一个数据库
创建一个表
向表中输入数据
用不同的方法从表中获得数据
使用多个表
这里的动物园数据库是简单的 (故意的),但是不难想象在现实生活中有许多情况需要使用类似的数据库,比如,一个农场主可以使用一个类似的数据库来管理他的家畜, 或者一个兽医用来管理病畜记录。 这里使用到的动物园数据库中,包含其中的数据和查询语句,都可以在 MySQL 的网站上找到,同时提供 tar 压缩(http://www.mysql.com/Downloads/Contrib/Examples/menagerie.tar.gz) 和 Zip 压缩 (http://www.mysql.com/Downloads/Contrib/Examples/menagerie.zip) 两种格式的文件下载。


使用 SHOW 语句找出目前在服务器上存在哪些数据库: 


mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
| tmp      |
+----------+
这个数据库的列表在你的机器上可能是不同的,但基本都会包含mysql和test数据库。mysql 数据库是必须的,因为它保存了用户访问权限的数据, test 数据库经常作为一个工作区提供给用户试试身手。


注意,你有可能看不到所有的数据库,如果你没有SHOW DATABASES 权限。请查看Section 13.5.1.3, “GRANT Syntax”. 


如果test 数据库存在,尝试访问它:


mysql> USE test
Database changed
这里请注意USE命令和QUIT命令一样,不需要分号结尾。 (你使用分号结尾也没有影响。) USE 语句还有一个特别的地方: 它只能作为单行输入。


你可以使用test 数据库 (只要你有访问它的权限) 来练习下面的例子,但是你在这个数据库中创建的任何东西都可以被其他访问这个数据库的人删掉,所以,你应该向你的 MySQL 管理员要求允许你使用一个自己的数据库,假设你想给你的数据库取名为menagerie, 管理员需要执行一个这样的命令:


mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
这里your_mysql_name 是分配给你的 MySQL 用户名,your_client_host 是你连接服务器所使用的机器的机器名。 


3.3.1. 创建和选择一个数据库
如果管理员在给你分配权限的时候创建了这个数据库,你就可以直接使用了, 否则,你需要自己创建它:


mysql> CREATE DATABASE menagerie;
在 Unix系统中,数据库名是区分大小写的 (不像 SQL 关键字),因此你必须总是以 menagerie 引用你的数据库,不是 Menagerie 、 MENAGERIE 或其他变种。 这条规则对表名也适用。 (在Windows中,这个限制不适用, 尽管你必须在同一个查询中使用同样的大小写来引用数据库和表。 由于这些原因,我们建议的最佳做法就是引用数据库和表的时候使用和创建它们时同样的大小写。) 


Note: 如果你得到ERROR 1044 (42000): Access denied for user 'monty'@'localhost' to database 'menagerie' when attempting to create a database的错误信息, 说明你的用户帐户不具备进行这个操作的权限。告诉你的管理员或者查看Section 5.8, “The MySQL Access Privilege System”. 


创建数据库后不会自动把它当成当前数据库使用, 你必须明确的选择它。 要使menagerie 成为当前数据库, 使用如下命令:


mysql> USE menagerie;
Database changed
你的数据库只需要创建一次, 但是每次启动mysql 会话的时候都需要选择它。你可以使用上面介绍的 USE 语句来选择数据库, 也可以在运行 mysql的时候通过命令行参数选择数据库,只需要在所有命令行参数之后指定数据库名就可以:


shell> mysql -h host -u user -p menagerie
Enter password: ********
请注意,如上命令行中的menagerie 可不是你的密码哟,如果你想在命令行中的-p 选项中提供密码,你必须不加任何空格, (比如,是-pmypassword,而不是-p mypassword)。然而,不建议把密码放在命令行中,因为会直接把明文暴露给使用你机器的其它用户。
3.3.2. 创建一个表
创建数据库很容易是吧,但它现在还是空的,可以用SHOW TABLES 查看:


mysql> SHOW TABLES;
Empty set (0.00 sec)
较难的部分是设计数据库的结构:数据库中包含哪些表和每个表中包含哪些列。


我们现在需要的是一个保存宠物记录的表, 可以给这个表取名为pet , 而且这个表最少也要包含每个动物的名字,但是仅仅只包含名字却没有什么意思,我们还要一些其它的信息。 比如,如果你家有多个人养宠物的话,你就可以给每个动物指定一个主任,还可以记录一些象种类和性别这样的信息。


年龄呢? 你肯定很关心这个信息,但是把它储存到数据库中却并不是一个好主意,因为年龄是随着时间变化的,你需要不断的更新你的数据库。一个更好的办法就是储存动物的生日,当你需要年龄的时候,你可以根据当前时间和生日进行计算, MySQL 提供了进行时间计算的函数,所以要做到这一点并不难。 存储生日而不是年龄还有以下几个好处:


你可以让数据库在宠物的生日即将来临的时候提醒你, (不要认为这个思路很无聊,在商业应用中,有很多时候需要在每个星期或每个月给要过生日的客户发出生日祝福,它们本质上是一样的。) 
你可以根据相对日期而不是当前日期来计算年龄, 比如,你在数据库中储存了动物的死亡日期, 你就可以非常容易的计算出动物是在多大的时候死的。 
你还可以给 pet 表添加其他有用的信息,但是到目前为止这些已经足够了:名字、主人、种类,性别、出生和死亡日期。 


使用CREATE TABLE 语句来指定你的表的结构:


mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
VARCHAR 类型用于储存name, owner, 和 species 列是比较合适的, 因为这些列中的数据是变长的。 这个定义不要求你这一列的数据长度豆一样,也不需要都是20。你可以选择1 到 65535之间的任何长度,只要你认为这个长度合适。 (Note: 在 MySQL 5.0.3以前,最大限制是 255。)如果你刚开始的选择不合理,以后需要较长的字段, 可以用MySQL 提供的ALTER TABLE 语句修改。


动物的性别可以用多种方法表示, 比如'm' 和 'f'或者'male' and 'female'。使用单个字符'm' 和 'f'是最简单的。


使用DATE 数据类型来保存birth和death 列的数据是比较合适的。 


创建表以后,在使用SHOW TABLES 将产生如下输出:


mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet                 |
+---------------------+
验证创建的表是否符合我们的设计,使用 DESCRIBE 语句:


mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
我们可以在任何时候使用DESCRIBE , 比如,当我们忘记某以列的名字或者它的数据类型时。


要获得更多关于 MySQL 数据类型的信息,请查看Chapter 11, Data Types. 


3.3.3. 向表中载入数据
创建表之后,就需要向表中填入数据,用 LOAD DATA 和 INSERT 语句可以做到。


假设你的宠物信息如下表所示。 (请注意观察,MySQL 的日期数据应该用 'YYYY-MM-DD' 的格式输入, 有些人的习惯可能跟这不同。) 


name owner species sex birth death 
Fluffy Harold cat f 1993-02-04  
Claws Gwen cat m 1994-03-17  
Buffy Harold dog f 1989-05-13  
Fang Benny dog m 1990-08-27  
Bowser Diane dog m 1979-08-31 1995-07-29 
Chirpy Gwen bird f 1998-09-11  
Whistler Gwen bird  1997-12-09  
Slim Benny snake m 1996-04-29  


因为现在数据表表是空的,所以向表中载入数据的简单做法就是把这些数据保存到文本文件中,然后使用一个语句把这个文本文件的内容加载到数据表中。


我们可以创建一个pet.txt 文本文件,它的每一行包含一条记录,每个值按照CREATE TABLE 语句中给出的顺序排列,并且用跳格符隔开,对于遗失的数据 ( 例如未知的性别,或仍然活着的动物的死亡日期 ),你可以使用NULL 值,在文本文件中,使用\N (backslash, capital-N)表示。 例如, Whistler 鸟的数据看起来象这样 (这些值之间的空白是单个的跳格符):


name owner species sex birth death 
Whistler Gwen bird \N 1997-12-09 \N 


把文本文件pet.txt into 载入到pet 表,使用如下命令:


mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
请注意,如果你是在Winows系统上创建的文本文件,并且文字编辑器使用\r\n 作为一行的结束,你应该使用如下语句:


mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
    -> LINES TERMINATED BY '\r\n';
(在运行 OS X操作系统的苹果机上,你很有可能需要使用LINES TERMINATED BY '\r'。) 


你可以在LOAD DATA语句中明确指出每列数据和每行数据之间的分隔符, 默认是跳格符和换行符。


如果该语句运行失败,极有可能是你的 MySQL 默认的配置为不接受从本地文件载入数据。 请查看Section 5.7.4, “Security Issues with LOAD DATA LOCAL”, 获得更改该默认配置的信息。


如果希望一次添加一条记录,可以INSERT语句,该语句最简单的用法中, 你只需要按照CREATE TABLE 语句中定义列的顺序为每一列指定数据即可。 假设 Diane新养了一只名叫 “Puffball.”的仓鼠, 你可以使用 INSERT 语句向表中添加一条记录:


mysql> INSERT INTO pet
    -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
注意,这里的字符串和日期都是以用引号括起来的字符串的形式输入的, 而且在INSERT语句中,你可以直接插入NULL表示遗失的数据,而不是象LOAD DATA语句中使用 \N 。 


从这个例子中可以看出, 一开始就使用多个INSERT 语句载入数据,比使用单个LOAD DATA语句载入数据,敲起键盘来要麻烦的多。




有需要学习MYSQL的朋友可以点击链接,整套资料学习观看。
http://www.wyzc.com/mysql/?tg=3006123630
MySQL 5.1参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. MaxDB的历史 1.5.3. MaxDB的特性 1.5.4. 许可和支持 1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL 2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从源码安装MySQL 2.8.7. 在Windows下编译MySQL客户端 2.9. 安装后的设置和测试 2.9.1. Windows下安装后的过程 2.9.2. Unix下安装后的过程 2.9.3. 使初始MySQL账户安全 2.10. 升级MySQL 2.10.1. 从5.0版升级 2.10.2. 升级授权表 2.10.3. 将MySQL数据库拷贝到另一台机器 2.11. 降级MySQL 2.12. 具体操作系统相关的注意事项 2.12.1. Linux注意事项 2.12.2. Mac OS X注意事项 2.12.3. Solaris注意事项 2.12.4. BSD注意事项 2.12.5. 其它Unix注意事项 2.12.6. OS/2注意事项 2.13. Perl安装注意事项 2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项文件 4.3.3. 用环境变量指定选项 4.3.4. 使用选项设置程序变量 5. 数据库管理 5.1. MySQL服务器和服务器启动脚本 5.1.1. 服务器端脚本和实用工具概述 5.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建用户账户 5.2.3. MySQL实例管理器命令行选项 5.2.4. MySQL实例管理器配置文件 5.2.5. MySQL实例管理器识别的命令 5.3. mysqld:MySQL服务器 5.3.1. mysqld命令行选项 5.3.2. SQL服务器模式 5.3.3. 服务器系统变量 5.3.4. 服务器状态变量 5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 5.8.1. MySQL用户名和密码 5.8.2. 向MySQL增加新用户账户 5.8.3. 从MySQL删除用户账户 5.8.4. 限制账户资源 5.8.5. 设置账户密码 5.8.6. 使你的密码安全 5.8.7. 使用安全连接 5.9. 备份与恢复 5.9.1. 数据库备份 5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制实施细节 6.3.1. 复制主线程状态 6.3.2. 复制从I/O线程状态 6.3.3. 复制从SQL线程状态 6.3.4. 复制传递和状态文件 6.4. 如何设置复制 6.5. 不同MySQL版本之间的复制兼容性 6.6. 升级复制设置 6.6.1. 将复制升级到5.0版 6.7. 复制特性和已知问题 6.8. 复制启动选项 6.9. 复制FAQ 6.10. 复制故障诊断与排除 6.11. 通报复制缺陷 6.12. 多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己的基准 7.2. 优化SELECT语句和其它查询 7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化DISTINCT 7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它优化技巧 7.3. 锁定事宜 7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合 7.4.8. MySQL如何计算打开的表 7.4.9. MySQL如何打开和关闭表 7.4.10. 在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具概述 8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysqlMySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM日志文件内容 8.13. perror:解释错误代码 8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. BINARY操作符 10.3.11. 校对确定较为复杂的一些特殊情况 10.3.12. 校对必须适合字符集 10.3.13. 校对效果的示例 10.4. 字符集支持影响到的操作 10.4.1. 结果字符串 10.4.2. CONVERT() 10.4.3. CAST() 10.4.4. SHOW语句 10.5. Unicode支持 10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 11.1. 列类型概述 11.1.1. 数值类型概述 11.1.2. 日期和时间类型概述 11.1.3. 字符串类型概述 11.2. 数值类型 11.3. 日期和时间类型 11.3.1. DATETIME、DATE和TIMESTAMP类型 11.3.2. TIME类型 11.3.3. YEAR类型 11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历? 12.7. 全文搜索功能 12.7.1. 布尔全文搜索 12.7.2. 全文搜索带查询扩展 12.7.3. 全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修改程序 12.10.3. 具有隐含字段的GROUP BY 13. SQL语句语法 13.1. 数据定义语句 13.1.1. ALTER DATABASE语法 13.1.2. ALTER TABLE语法 13.1.3. CREATE DATABASE语法 13.1.4. CREATE INDEX语法 13.1.5. CREATE TABLE语法 13.1.6. DROP DATABASE语法 13.1.7. DROP INDEX语法 13.1.8. DROP TABLE语法 13.1.9. RENAME TABLE语法 13.2. 数据操作语句 13.2.1. DELETE语法 13.2.2. DO语法 13.2.3. HANDLER语法 13.2.4. INSERT语法 13.2.5. LOAD DATA INFILE语法 13.2.6. REPLACE语法 13.2.7. SELECT语法 13.2.8. Subquery语法 13.2.9. TRUNCATE语法 13.2.10. UPDATE语法 13.3. MySQL实用工具语句 13.3.1. DESCRIBE语法(获取有关列的信息) 13.3.2. USE语法 13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET语法 13.5.4. SHOW语法 13.5.5. 其它管理语句 13.6. 复制语句 13.6.1. 用于控制主服务器的SQL语句 13.6.2. 用于控制从服务器的SQL语句 13.7. 用于预处理语句的SQL语法 14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面的问题 15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和索引结构 15.2.14. 文件空间管理和磁盘I/O 15.2.15. InnoDB错误处理 15.2.16. 对InnoDB表的限制 15.2.17. InnoDB故障诊断与排除 15.3. MERGE存储引擎 15.3.1. MERGE表方面的问题 15.4. MEMORY (HEAP)存储引擎 15.5. BDB (BerkeleyDB)存储引擎 15.5.1. BDB支持的操作系统 15.5.2. 安装BDB 15.5.3. BDB启动选项 15.5.4. BDB表的特性 15.5.5. 修改BDB所需的事宜 15.5.6. 对BDB表的限制 15.5.7. 使用BDB表时可能出现的错误 15.6. EXAMPLE存储引擎 15.7. FEDERATED存储引擎 15.7.1. 安装FEDERATED存储引擎 15.7.2. FEDERATED存储引擎介绍 15.7.3. 如何使用FEDERATED表 15.7.4. FEDERATED存储引擎的局限性 15.8. ARCHIVE存储引擎 15.9. CSV存储引擎 15.10. BLACKHOLE存储引擎 16. 编写自定义存储引擎 16.1. 前言 16.2. 概述 16.3. 创建存储引擎源文件 16.4. 创建handlerton 16.5. 对处理程序进行实例化处理 16.6. 定义表扩展 16.7. 创建表 16.8. 打开表 16.9. 实施基本的表扫描功能 16.9.1. 实施store_lock()函数 16.9.2. 实施external_lock()函数 16.9.3. 实施rnd_init()函数 16.9.4. 实施info()函数 16.9.5. 实施extra()函数 16.9.6. 实施rnd_next()函数 16.10. 关闭表 16.11. 为存储引擎添加对INSERT的支持 16.12. 为存储引擎添加对UPDATE的支持 16.13. 为存储引擎添加对DELETE的支持 16.14. API引用 16.14.1. bas_ext 16.14.2. close 16.14.3. create 16.14.4. delete_row 16.14.5. delete_table 16.14.6. external_lock 16.14.7. extra 16.14.8. info 16.14.9. open 16.14.10. rnd_init 16.14.11. rnd_next 16.14.12. store_lock 16.14.13. update_row 16.14.14. write_row 17. MySQL簇 17.1. MySQL簇概述 17.2. MySQL簇的基本概念 17.3. 多计算机的简单基础知识 17.3.1. 硬件、软件和联网 17.3.2. 安装 17.3.3. 配置 17.3.4. 首次启动 17.3.5. 加载示例数据并执行查询 17.3.6. 安全关闭和重启 17.4. MySQL簇的配置 17.4.1. 从源码创建MySQL簇 17.4.2. 安装软件 17.4.3. MySQL簇的快速测试设置 17.4.4. 配置文件 17.5. MySQL簇中的进程管理 17.5.1. 用于MySQL簇的MySQL服务器进程使用 17.5.2. ndbd,存储引擎节点进程 17.5.3. ndb_mgmd,“管理服务器”进程 17.5.4. ndb_mgm,“管理客户端”进程 17.5.5. 用于MySQL簇进程的命令选项 17.6. MySQL簇的管理 17.6.1. MySQL簇的启动阶段 17.6.2. “管理客户端”中的命令 17.6.3. MySQL簇中生成的事件报告 17.6.4. 单用户模式 17.6.5. MySQL簇的联机备份 17.7. 使用与MySQL簇的高速互连 17.7.1. 配置MySQL簇以使用SCI套接字 17.7.2. 理解簇互连的影响 17.8. MySQL簇的已知限制 17.9. MySQL簇发展的重要历程 17.9.1. MySQL 5.0中的MySQL簇变化 17.9.2. 关于MySQL簇的MySQL 5.1发展历程 17.10. MySQL簇常见问题解答 17.11. MySQL簇术语表 18. 分区 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的方式 18.3. 分区管理 18.3.1. RANGE和LIST分区的管理 18.3.2. HASH和KEY分区的管理 18.3.3. 分区维护 18.3.4. 获取关于分区的信息 19. MySQL中的空间扩展 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 19.2.5. 类LineString 19.2.6. 类Surface 19.2.7. 类Polygon 19.2.8. 类GeometryCollection 19.2.9. 类MultiPoint 19.2.10. 类MultiCurve 19.2.11. 类MultiLineString 19.2.12. 类MultiSurface 19.2.13. 类MultiPolygon 19.3. 支持的空间数据格式 19.3.1. 著名的文本(WKT)格式 19.3.2. 著名的二进制(WKB)格式 19.4. 创建具备空间功能的MySQL数据库 19.4.1. MySQL空间数据类型 19.4.2. 创建空间值 19.4.3. 创建空间列 19.4.4. 填充空间列 19.4.5. 获取空间数据 19.5. 分析空间信息 19.5.1. Geometry格式转换函数 19.5.2. Geometry函数 19.5.3. 从已有Geometry创建新Geometry的函数 19.5.4. 测试几何对象间空间关系的函数 19.5.5. 关于几何最小边界矩形(MBR)的关系 19.5.6. 测试几何类之间空间关系的函数 19.6. 优化空间分析 19.6.1. 创建空间索引 19.6.2. 使用空间索引 19.7. MySQL的一致性和兼容性 19.7.1. 尚未实施的GIS特性 20. 存储程序和函数 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER PROCEDURE和ALTER FUNCTION 20.2.3. DROP PROCEDURE和DROP FUNCTION 20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION 20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS 20.2.6. CALL语句 20.2.7. BEGIN ... END复合语句 20.2.8. DECLARE语句 20.2.9. 存储程序中的变量 20.2.10. 条件和处理程序 20.2.11. 光标 20.2.12. 流程控制构造 20.3. 存储程序、函数、触发程序和复制:常见问题 20.4. 存储子程序和触发程序的二进制日志功能 21. 触发程序 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 22. 视图 22.1. ALTER VIEW语法 22.2. CREATE VIEW语法 22.3. DROP VIEW语法 22.4. SHOW CREATE VIEW语法 23. INFORMATION_SCHEMA信息数据库 23.1. INFORMATION_SCHEMA表 23.1.1. INFORMATION_SCHEMA SCHEMATA表 23.1.2. INFORMATION_SCHEMA TABLES表 23.1.3. INFORMATION_SCHEMA COLUMNS表 23.1.4. INFORMATION_SCHEMA STATISTICS表 23.1.5. INFORMATION_SCHEMA USER_PRIVILEGES表 23.1.6. INFORMATION_SCHEMA SCHEMA_PRIVILEGES表 23.1.7. INFORMATION_SCHEMA TABLE_PRIVILEGES表 23.1.8. INFORMATION_SCHEMA COLUMN_PRIVILEGES表 23.1.9. INFORMATION_SCHEMA CHARACTER_SETS表 23.1.10. INFORMATION_SCHEMA COLLATIONS表 23.1.11. INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表 23.1.12. INFORMATION_SCHEMA TABLE_CONSTRAINTS表 23.1.13. INFORMATION_SCHEMA KEY_COLUMN_USAGE表 23.1.14. INFORMATION_SCHEMA ROUTINES表 23.1.15. INFORMATION_SCHEMA VIEWS表 23.1.16. INFORMATION_SCHEMA TRIGGERS表 23.1.17. 其他INFORMATION_SCHEMA表 23.2. SHOW语句的扩展 24. 精度数学 24.1. 数值的类型 24.2. DECIMAL数据类型更改 24.3. 表达式处理 24.4. 四舍五入 24.5. 精度数学示例 25. API和库 25.1. libmysqld,嵌入式MySQL服务器库 25.1.1. 嵌入式MySQL服务器库概述 25.1.2. 使用libmysqld编译程序 25.1.3. 使用嵌入式MySQL服务器时的限制 25.1.4. 与嵌入式服务器一起使用的选项 25.1.5. 嵌入式服务器中尚需完成的事项(TODO) 25.1.6. 嵌入式服务器示例 25.1.7. 嵌入式服务器的许可 25.2. MySQL C API 25.2.1. C API数据类型 25.2.2. C API函数概述 25.2.3. C API函数描述 25.2.4. C API预处理语句 25.2.5. C API预处理语句的数据类型 25.2.6. C API预处理语句函数概述 25.2.7. C API预处理语句函数描述 25.2.8. C API预处理语句方面的问题 25.2.9. 多查询执行的C API处理 25.2.10. 日期和时间值的C API处理 25.2.11. C API线程函数介绍 25.2.12. C API嵌入式服务器函数介绍 25.2.13. 使用C API时的常见问题 25.2.14. 创建客户端程序 25.2.15. 如何生成线程式客户端 25.3. MySQL PHP API 25.3.1. 使用MySQL和PHP的常见问题 25.4. MySQL Perl API 25.5. MySQL C++ API 25.5.1. Borland C++ 25.6. MySQL Python API 25.7. MySQL Tcl API 25.8. MySQL Eiffel Wrapper 25.9. MySQL程序开发实用工具 25.9.1. msql2mysql:转换mSQL程序以用于MySQL 25.9.2. mysql_config:获取编译客户端的编译选项 26. 连接器 26.1. MySQL Connector/ODBC 26.1.1. MyODBC介绍 26.1.2. 关于ODBC和MyODBC的一般信息 26.1.3. 如何安装MyODBC 26.1.4. 在Windows平台上从二进制版本安装MyODBC 26.1.5. I在Unix平台上从二进制版本安装MyODBC 26.1.6. 在Windows平台上从源码版本安装MyODBC 26.1.7. 在Unix平台上从源码版本安装MyODBC 26.1.8. 从BitKeeper开发源码树安装MyODBC 26.1.9. MyODBC配置 26.1.10. 与MyODBC连接相关的事宜 26.1.11. MyODBC和Microsoft Access 26.1.12. MyODBC和Microsoft VBA及ASP 26.1.13. MyODBC和第三方ODBC工具 26.1.14. MyODBC通用功能 26.1.15. 基本的MyODBC应用步骤 26.1.16. MyODBC API引用 26.1.17. MyODBC数据类型 26.1.18. MyODBC错误代码 26.1.19. MyODBC与VB:ADO、DAO和RDO 26.1.20. MyODBC与Microsoft.NET 26.1.21. 感谢 26.2. MySQL Connector/NET 26.2.1. 前言 26.2.2. 下载并安装MySQL Connector/NET 26.2.3. Connector/NET体系结构 26.2.4. 使用MySQL Connector/NET 26.2.5. MySQL Connector/NET变更史 26.3. MySQL Connector/J 26.3.1. 基本的JDBC概念 26.3.2. 安装 Connector/J 26.3.3. JDBC引用 26.3.4. 与J2EE和其他Java框架一起使用 Connector/J 26.3.5. 诊断 Connector/J方面的问题 26.3.6. Changelog 26.4. MySQL Connector/MXJ 26.4.1. 前言 26.4.2. 支持平台: 26.4.3. Junit测试要求 26.4.4. 运行Junit测试 26.4.5. 作为JDBC驱动程序的一部分运行 26.4.6. 在Java对象中运行 26.4.7. MysqldResource API 26.4.8. 在JMX代理(custom)中运行 26.4.9. 部署在标准的JMX代理环境下 (JBoss) 26.4.10. 安装 27. 扩展MySQL 27.1. MySQL内部控件 27.1.1. MySQL线程 27.1.2. MySQL测试套件 27.2. 为MySQL添加新函数 27.2.1. 自定义函数接口的特性 27.2.2. CREATE FUNCTION/DROP FUNCTION语法 27.2.3. 添加新的自定义函数 27.2.4. 添加新的固有函数 27.3. 为MySQL添加新步骤 27.3.1. 步骤分析 27.3.2. 编写步骤 A. 问题和常见错误 A.1. 如何确定导致问题的原因 A.2. 使用MySQL程序时的常见错误 A.2.1. 拒绝访问 A.2.2. 无法连接到[local] MySQL服务器 A.2.3. 客户端不支持鉴定协议 A.2.4. 输入密码时出现密码错误 A.2.5. 主机的host_name被屏蔽 A.2.6. 连接数过多 A.2.7. 内存溢出 A.2.8. MySQL服务器不可用 A.2.9. 信息包过大 A.2.10. 通信错误和失效连接 A.2.11. 表已满 A.2.12. 无法创建文件/写入文件 A.2.13. 命令不同步 A.2.14. 忽略用户 A.2.15. 表tbl_name不存在 A.2.16. 无法初始化字符集 A.2.17. 文件未找到 A.3. 与安装有关的事宜 A.3.1. 与MySQL客户端库的链接问题 A.3.2. 如何以普通用户身份运行MySQL A.3.3. 与文件许可有关的问题 A.4. 与管理有关的事宜 A.4.1. 如何复位根用户密码 A.4.2. 如果MySQL依然崩溃,应作些什么 A.4.3. MySQL处理磁盘满的方式 A.4.4. MySQL将临时文件储存在哪里 A.4.5. 如何保护或更改MySQL套接字文件/tmp/mysql.sock A.4.6. 时区问题 A.5. 与查询有关的事宜 A.5.1. 搜索中的大小写敏感性 A.5.2. 使用DATE列方面的问题 A.5.3. 与NULL值有关的问题 A.5.4. 与列别名有关的问题 A.5.5. 非事务表回滚失败 A.5.6. 从相关表删除行 A.5.7. 解决与不匹配行有关的问题 A.5.8. 与浮点比较有关的问题 A.6. 与优化器有关的事宜 A.7. 与表定义有关的事宜 A.7.1. 与ALTER TABLE有关的问题 A.7.2. 如何更改表中的列顺序 A.7.3. TEMPORARY TABLE问题 A.8. MySQL中的已知事宜 A.8.1. MySQL中的打开事宜 B. 错误代码和消息 B.1. 服务器错误代码和消息 B.2. 客户端错误代码和消息 C. 感谢 C.1. MySQL AB处的开发人 C.2. MySQL贡献人 C.3. 资料员和译员 C.4. MySQL使用和包含的库 C.5. 支持MySQL的软件包 C.6. 用于创建MySQL的工具 C.7. MySQL支持人员 D. MySQL变更史 D.1. 5.1.x版中的变更情况(开发) D.1.1. 5.1.2版中的变更情况(尚未发布) D.1.2. 5.1.1版中的变更情况(尚未发布) D.2. MyODBC的变更情况 D.2.1. MyODBC 3.51.12的变更情况 D.2.2. MyODBC 3.51.11的变更情况 E. 移植到其他系统 E.1. 调试MySQL服务器 E.1.1. 针对调试编译MySQL E.1.2. 创建跟踪文件 E.1.3. 在gdb环境下调试mysqld E.1.4. 使用堆栈跟踪 E.1.5. 使用日志文件找出mysqld中的错误原因 E.1.6. 如果出现表崩溃,请生成测试案例 E.2. 调试MySQL客户端 E.3. DBUG软件包 E.4. 关于RTS线程的注释 E.5. 线程软件包之间的差异 F. 环境变量 G. MySQL正则表达式 H. MySQL中的限制 H.1. 联合的限制 I. 特性限制 I.1. 对存储子程序和触发程序的限制 I.2. 对服务器端光标的限制 I.3. 对子查询的限制 I.4. 对视图的限制 I.5. 对XA事务的限制 J. GNU通用公共许可 K. MySQL FLOSS许可例外 索引 图形清单 14.1. MySQL插件式存储引擎的体系结构 14.2. 存储引擎比较 16.1. MySQL体系结构 表格清单 26.1. 连接属性 26.2. 转换表 26.3. 用于ResultSet.getObject()的MySQL类型和Java类型 26.4. MySQL对Java编码名称的翻译 示例清单 26.1. 从DriverManager获得连接 26.2. 使用java.sql.Statement执行SELECT查询 26.3. 存储程序示例 26.4. 使用Connection.prepareCall() 26.5. 注册输出参数 26.6. 设置CallableStatement输入参数 26.7. 检索结果和输出参数值 26.8. 使用Statement.getGeneratedKeys()检索AUTO_INCREMENT列的值 26.9. 使用SELECT LAST_INSERT_ID()检索AUTO_INCREMENT列的值 26.10. 在可更新的ResultSets中检索AUTO_INCREMENT列的值 26.11. 设置Unix环境下的CLASSPATH 26.12. 与J2EE应用服务器一起使用连接池 26.13. 重试逻辑的事务示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值