目录搜索
目录前言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模式下运行MySQL1.8.4. MySQL对标准SQL的扩展1.8.5. MySQL与标准SQL的差别1.8.6. MySQL处理约束的方式2. 安装MySQL2.1. 一般安装问题2.1.1. MySQL支持的操作系统2.1.2. 选择要安装的MySQL分发版2.1.3. 怎样获得MySQL2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性2.1.5. 安装布局2.2. 使用二进制分发版的标准MySQL安装2.3. 在Windows上安装MySQL2.3.1. Windows系统要求2.3.2. 选择安装软件包2.3.3. 用自动安装器安装MySQL2.3.4. 使用MySQL安装向导2.3.5. 使用配置向导2.3.6. 通过非安装Zip文件安装MySQL2.3.7. 提取安装档案文件2.3.8. 创建选项文件2.3.9. 选择MySQL服务器类型2.3.10. 首次启动服务器2.3.11. 从Windows命令行启动MySQL2.3.12. 以Windows服务方式启动MySQL2.3.13. 测试MySQL安装2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除2.3.15. 在Windows下升级MySQL2.3.16. Windows版MySQL同Unix版MySQL对比2.4. 在Linux下安装MySQL2.5.在Mac OS X中安装MySQL2.6. 在NetWare中安装MySQL2.7. 在其它类Unix系统中安装MySQL2.8. 使用源码分发版安装MySQL2.8.1. 源码安装概述2.8.2. 典型配置选项2.8.3. 从开发源码树安装2.8.4. 处理MySQL编译问题2.8.5. MIT-pthreads注意事项2.8.6. 在Windows下从源码安装MySQL2.8.7. 在Windows下编译MySQL客户端2.9. 安装后的设置和测试2.9.1. Windows下安装后的过程2.9.2. Unix下安装后的过程2.9.3. 使初始MySQL账户安全2.10. 升级MySQL2.10.1. 从5.0版升级2.10.2. 升级授权表2.10.3. 将MySQL数据库拷贝到另一台机器2.11. 降级MySQL2.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中安装Perl2.13.2. 在Windows下安装ActiveState Perl2.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. 获得数据库和表的信息NoName3.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_INCREMENT3.7. 孪生项目的查询3.7.1. 查找所有未分发的孪生项3.7.2. 显示孪生对状态的表3.8. 与Apache一起使用MySQL4. 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. 访问控制5.7.6. 访问控制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. 复制FAQ6.10. 复制故障诊断与排除6.11. 通报复制缺陷6.12. 多服务器复制中的Auto-Increment7. 优化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 NULL7.2.8. MySQL如何优化DISTINCT7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN7.2.10. MySQL如何优化嵌套Join7.2.11. MySQL如何简化外部联合7.2.12. MySQL如何优化ORDER BY7.2.13. MySQL如何优化GROUP BY7.2.14. MySQL如何优化LIMIT7.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如何使用DNS7.6. 磁盘事宜7.6.1. 使用符号链接8. 客户端和实用工具程序8.1. 客户端脚本和实用工具概述8.2. myisampack:生成压缩、只读MyISAM表8.3. mysql:MySQL命令行工具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语句中使用COLLATE10.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. 用于元数据的UTF810.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. 其他函数NoName12.10.1. GROUP BY(聚合)函数12.10.2. GROUP BY修改程序12.10.3. 具有隐含字段的GROUP BY13. 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 TRANSACTION13.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/O15.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. 安装BDB15.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. 创建存储引擎源文件NoName16.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. 关闭表NoNameNoNameNoName16.14. API引用16.14.1. bas_ext16.14.2. close16.14.3. create16.14.4. delete_row16.14.5. delete_table16.14.6. external_lock16.14.7. extra16.14.8. info16.14.9. open16.14.10. rnd_init16.14.11. rnd_next16.14.12. store_lock16.14.13. update_row16.14.14. write_row17. 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. 类Geometry19.2.3. 类Point19.2.4. 类Curve19.2.5. 类LineString19.2.6. 类Surface19.2.7. 类Polygon19.2.8. 类GeometryCollection19.2.9. 类MultiPoint19.2.10. 类MultiCurve19.2.11. 类MultiLineString19.2.12. 类MultiSurface19.2.13. 类MultiPolygon19.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 FUNCTION20.2.2. ALTER PROCEDURE和ALTER FUNCTION20.2.3. DROP PROCEDURE和DROP FUNCTION20.2.4.SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION20.2.5.SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS20.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表NoName24. 精度数学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 API25.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 API25.3.1. 使用MySQL和PHP的常见问题25.4. MySQL Perl API25.5. MySQL C++ API25.5.1. Borland C++25.6. MySQL Python API25.7. MySQL Tcl API25.8. MySQL Eiffel Wrapper25.9. MySQL程序开发实用工具25.9.1. msql2mysql:转换mSQL程序以用于MySQL25.9.2. mysql_config:获取编译客户端的编译选项26. 连接器26.1. MySQL Connector/ODBC26.1.1. MyODBC介绍26.1.2. 关于ODBC和MyODBC的一般信息26.1.3. 如何安装MyODBC26.1.4. 在Windows平台上从二进制版本安装MyODBC26.1.5. I在Unix平台上从二进制版本安装MyODBC26.1.6. 在Windows平台上从源码版本安装MyODBC26.1.7. 在Unix平台上从源码版本安装MyODBC26.1.8. 从BitKeeper开发源码树安装MyODBC26.1.9. MyODBC配置26.1.10. 与MyODBC连接相关的事宜26.1.11. MyODBC和Microsoft Access26.1.12. MyODBC和Microsoft VBA及ASP26.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和RDO26.1.20. MyODBC与Microsoft.NET26.1.21. 感谢26.2. MySQL Connector/NET26.2.1. 前言26.2.2. 下载并安装MySQL Connector/NET26.2.3. Connector/NET体系结构26.2.4. 使用MySQL Connector/NET26.2.5. MySQL Connector/NET变更史26.3. MySQL Connector/J26.3.1. 基本的JDBC概念26.3.2. 安装 Connector/J26.3.3. JDBC引用26.3.4. 与J2EE和其他Java框架一起使用 Connector/J26.3.5. 诊断 Connector/J方面的问题26.3.6. Changelog26.4. MySQL Connector/MXJ26.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 API26.4.8. 在JMX代理(custom)中运行26.4.9. 部署在标准的JMX代理环境下 (JBoss)26.4.10. 安装27. 扩展MySQL27.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. 输入密码时出现密码错误NoNameA.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. 如何以普通用户身份运行MySQLA.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.sockA.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. 针对调试编译MySQLE.1.2. 创建跟踪文件E.1.3. 在gdb环境下调试mysqldE.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许可例外索引
文字

附录J:GNU通用公共许可

1991.6 第二版

版权所有©19891991Free Software Foundation有限公司

59 Temple PlaceSuite 330BostonMA 02111-1307USA
允许每个人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行任何修改。

前言

大多数软件许可证决意剥夺你的共享和修改软件的自由。对比之下,GNU通用公共许可证力图保证你的共享和修改自由软件的自由。保证自由软件对所有用户是自由的。该GPL适用于大多数自由软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(自由软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将它用到你的程序中。

当我们谈到自由软件(free software)时,我们指的是自由而不是价格。我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源码或者在你需要时能得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。

为了保护你的权利,我们需要做出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。

例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源码;并且将这些条款给他们看,使他们知道他们有这样的权利。

我们采取两项措施来保护你的权利:(1)给软件以版权保护。(2)给你提供许可证。它给你复制,发布和修改这些软件的法律许可。

同样,为了保护每个作者和我们自己,我们需要清楚地让每个人明白,自由软件没有担保(no warranty)。如果由于其他某个人修改了软件,并继续加以传播。我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其他人引入的任何问题,不应损害原作者的声誉。

最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可证。事实上,将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。

下面是有关复制,发布和修改的确切的条款和条件。

GNU通用公共许可证有关复制,发布和修改的条款和条件

1.    此许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPL条款的约束下发布。下面提到的“程序”指的是任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版权法约束的衍生作品。也就是说包含程序或程序的一部分的作品。可以是原封不动的,或经过修改的和/或翻译成其他语言的(在下文中,翻译包含在条款“修改”中,无任何限制)。每个许可证接受人(licensee)用你来称呼。

许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。是否普遍适用取决于程序具体用来做什么。

2.    只要你在每一副本上明显和恰当地出版版权声明和拒绝担保声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。

你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定的费用。

3.    你可以修改程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品:

a.    你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。

b.    你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用

c.    如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。

这些要求适用于修改了的作品的整体。如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当你将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。

因此,本条款的意图不在于索取权利;或剥夺全部由你写成的作品的权利。而是履行权利来控制基于程序的集体作品或衍生作品的发布。

此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。

4.    你可以以目标码或可执行形式复制或发布程序(或符合第2款的基于程序的作品),只要你遵守前面的第12款,并同时满足下列3条中的1条:

a.    在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的源码。这些源码的发布应符合上面第12款的要求。或者

b.    在通常用作软件交换的媒体上,和目标码一起,附有给第三方提供相应的机器可读的源码的书面报价。有效期不少于3年,费用不超过实际完成源程序发布的实际成本。源码的发布应符合上面的第12款的要求。或者

c.    和目标码一起,附有你收到的发布源码的报价信息。(这一条款只适用于非商业性发布,而且你只收到程序的目标码或可执行代码和按b)款要求提供的报价)。

作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源代码,加上有关的接口的定义,加上控制可执行作品的安装和编译的脚本。作为特殊例外,发布版(以源码形式或二进制形式)不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。

如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。

5.    除非你明确按许可证提出的要求去做,否则你不能复制,修改,转发许可证和发布程序。任何试图用其他方式复制,修改,转发许可证和发布程序是无效的。而且将自动结束许可证赋予你的权利。然而,对那些从你那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。

6.    你没有在许可证上签字,因而你没有必要一定接受这一许可证。然而,没有任何其他东西赋予你修改和发布程序及其衍生作品的权利。如果你不接受许可证,这些行为是法律禁止的。因此,如果你修改或发布程序(或任何基于程序的作品),你就表明你接受这一许可证以及它的所有有关复制,发布和修改程序或基于程序的作品的条款和条件。

7.    每当你重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的许可证。你不可以对接受者履行这里赋予他们的权利强加其他限制。你也没有强求第三方履行许可证条款的义务。

8.    如果由于法院判决或违反专利的指控或任何其他原因(不限于专利问题)的结果,强加于你的条件(不管是法院判决,协议或其他)和许可证的条件有冲突,他们也不能用许可证条款为你开脱。在你不能同时满足本许可证规定的义务及其他相关的义务时,作为结果,你可以根本不发布程序。例如,如果某一专利许可证不允许所有那些直接或间接从你那里接受副本的人们在不付专利费的情况下重新发布程序,唯一能同时满足两方面要求的办法是停止发布程序。

如果本节的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分,并将条款作为整体用于其他环境。

本节的目的不在于引诱你侵犯专利或其他财产权的要求,或争论这种要求的有效性。本条款的唯一目的在于保护自由软件发布系统的完整性,它是通过通用公共许可证的应用来实现的。许多人坚持应用这一系统,已经为通过这一系统发布大量自由软件做出慷慨的供献。作者/捐献者有权决定他或她是否通过任何其他系统发布软件。许可证持有人不能强制这种选择。

本节的目的在于明确说明许可证其余部分可能产生的结果。

9.    如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和使用受到限止,将此程序置于许可证约束下的原始版权拥有者可以增加限止发布地区的条款,将这些国家明确排除在外。并在这些国家以外的地区发布程序。在这种情况下,许可证包含的限止条款和许可证正文一样有效。

10.自由软件基金会可能随时出版通用公共许可证的修改版和/或新版。新版和当前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现差别。

每一版本都有不同的版本号。如果程序指定适用于它的许可证版本号以及“任何更新的版本”。你有权选择遵循指定的版本或自由软件基金会以后出版的新版本,如果程序未指定许可证版本,你可选择自由软件基金会已经出版的任何版本。

11.如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同。写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导。这两个主要目标是:我们的自由软件的衍生作品继续保持自由状态。以及从整体上促进软件的共享和重复利用。

无担保

12.由于程序准予免费使用,在适用法准许的范围内,对程序没有担保。除非另有书面说明,版权所有者和/或其他提供程序的人们“一样”不提供任何类型的担保。不论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部的风险,如程序的质量和性能问题都由你来承担。如果程序出现缺陷,你承担所有必要的服务,修复和改正的费用。

13.除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布程序的人们都不对你的损失负有任何责任。包括由于使用或不能使用程序引起的任何一般的,特殊的,偶然发生的或重大的损失(包括但不限于数据的损失,或者数据变得不精确,或者你或第三方的持续的损失,或者程序不能和其他程序协调运行等)。即使版权所有者和其他人提到这种损失的可能性也不例外。

条款和条件结束

如何将这些条款用到你的新程序

如果你开发了新程序,而且你需要它得到公众最大限度的利用。要做到这一点的最好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进行修改和重新发布。

为了做到这一点,给程序附上下列声明。最安全的方式是将它放在每个源码文件的开头,以便最有效地传递拒绝担保的信息。每个文件至少应有“版权所有”行以及在什么地方能看到声明全文的指示。

用一行空间给出程序的名称和它用来做什么的简单说明。
版权所有(C,yyyy,作者姓名
 
这一程序是自由软件,你可以遵照自由软件基金会出版的GNU通用公共许可证条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你的选择)用任何更新的版本。
 
发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的隐含的担保。更详细的情况请参阅GNU通用公共许可证。
 
你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,



写信给:Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
此外,还应加上以电子邮件和纸张邮件方式与你保持联系的信息。

如果程序以交互方式进行工作,当它开始进入交互方式工作时,使它输出类似下面的简短声明:
Gnomovision
69版, 版权所有(C 19XX, 作者姓名,

Gnomovision绝对没有担保。要想了解详细情况,请输入‘show w’。

这是自由软件,欢迎你遵守一定的条件重新发布它,要想了解详细情况,请输入‘show c’。

假设的命令‘show w’和‘show c’应显示通用公共许可证的恰当部分。当然,你使用的命令名称可以不同于‘show w’和‘show c’。根据你的程序的具体情况,也可以用菜单或鼠标选项来显示这些条款。

如果需要,你应该取得你的雇主(如果你是程序员)或你的学校签署放弃程序版权的声明。下面只是一个例子,你应该改变相应的名称:

Yoyodyne有限公司以此方式放弃James Harker所写的Gnomovision程序(在编译器上通过)的全部版权利益。

Ty coon签名,1989.4.1

Ty coon付总裁

该通用公共许可证不允许你将程序并入专用程序。如果你的程序是一个子程序库,你可能会认为用库的方式和专用应用程序链接更有用。如果这是你想做的事,使用GNU库通用公共许可证代替本许可证。


这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。

上一篇:下一篇: