内容简介
第一部分 综述
第1章 MySQL简介
1.1 简介
1.2 数据库、数据库服务器和数据库语言
1.3 关系模型
1.3.1 表、列和行
1.3.2 Null值
1.3.3 约束
1.3.4 主键
1.3.5 候选键
1.3.6 替换键
1.3.7 外键
1.4 SQL是什么
1.5 SQL的历史
1.6 从单机到客户/服务器再到Internet
1.7 SQL的标准
1.8 什么是开源软件
1.9 MySQL的历史
1.10 本书的组织结构
第2章 网球俱乐部示例数据库
2.1 简介
2.2 网球俱乐部简介
2.3 表的内容
2.4 完整性约束
第3章 安装软件
3.1 简介
3.2 下载MySQL
3.3 安装MySQL
3.4 安装查询工具
3.5 从Web站点下载SQL语句
3.6 准备好了吗
第4章 SQL概要
4.1 简介
4.2 登录到MySQL数据库服务器
4.3 创建新的SQL用户
4.4 创建数据库
4.5 选择当前数据库
4.6 创建表
4.7 用数据填充表
4.8 查询表
4.9 更新和删除行
4.10 使用索引优化查询过程
4.11 视图
4.12 用户和数据安全性
4.13 删除数据库对象
4.14 系统变量
4.15 对SQL语句分组
4.16 Catalog表
4.17 获取错误和警告
4.18 SQL语句的定义
第二部分 查询和更新数据
第5章 SELECT语句:常用元素
5.1 简介
5.2 直接量及其数据类型
5.2.1 整型直接量
5.2.2 小数直接量
5.2.3 浮点直接量
5.2.4 字符直接量
5.2.5 日期直接量
5.2.6 时间直接量
5.2.7 日期时间直接量和时间戳直接量
5.2.8 年直接量
5.2.9 布尔直接量
5.2.10 十六进制直接量
5.2.11 位直接量
5.3 表达式
5.4 为结果列分配名字
5.5 列指定
5.6 用户变量和SET语句
5.7 系统变量
5.8 CASE表达式
5.9 括号中的标量表达式
5.10 标量函数
5.11 表达式的类型转换
5.12 作为一个表达式的空值
5.13 复合标量表达式
5.13.1 复合数值表达式
5.13.2 复合字符表达式
5.13.3 复合日期表达式
5.13.4 复合时间表达式
5.13.5 复合时间戳和日期时间表达式
5.13.6 复合布尔表达式
5.14 聚合函数和标量子查询
5.15 行表达式
5.16 表表达式
5.17 练习解答
第6章 SELECT语句、表表达式和子查询
6.1 简介
6.2 SELECT语句的定义
6.3 处理一个选择语句块中的子句
6.4 表表达式的形式
6.5 什么是SELECT语句
6.6 什么是子查询
6.7 练习解答
第7章 SELECT语句:FROM子句
7.1 简介
7.2 FROM子句中的表指定
7.3 再谈列指定
7.4 FROM子句中的多个表指定
7.5 表名的假名
7.6 联接的各种例子
7.7 必须使用假名的情况
7.8 同数据库的表
7.9 FROM子句中的显式联接
7.10 外联接
7.10.1 左外联接
7.10.2 右外联接
7.11 自然联接
7.12 联接条件中的附加条件
7.13 交叉联接
7.14 使用USING替换联接条件
7.15 带有表表达式的FROM子句
7.16 练习解答
第8章 SELECT语句:WHERE子句
8.1 简介
8.2 使用比较运算符的条件
8.3 子查询中的比较运算符
8.4 带有关联性子查询的比较运算符
8.5 不带比较运算符的条件
8.6 用ANDOR、XOR和NOT组合的条件
8.7 使用表达式列表的IN运算符
8.8 带有子查询的IN运算符
8.9 BETWEEN运算符
8.10 LIKE运算符
8.11 REGEXP运算符
8.12 MATCH运算符
8.13 IS NULL运算符
8.14 EXISTS运算符
8.15 ALL和ANY运算符
8.16 子查询中列的作用域
8.17 使用关联性子查询的更多例子
8.18 带有否定的条件
8.19 练习解答
第9章 SELECT语句:SELECT子句和聚合函数
9.1 简介
9.2 选择所有列(*)
9.3 SELECT子句中的表达式
9.4 使用DISTINCT移除重复的行
9.5 何时两行相等
9.6 更多选择选项
9.7 聚合函数简介
9.8 COUNT函数
9.9 MAX和MIN函数
9.10 SUM和AVG函数
9.11 VARIANCE和STDDEV函数
9.12 VAR_SAMP和STDDEV_SAMP函数
9.13 BIT_AND、BIT_OR和BIT_XOR函数
9.14 练习解答
第10章 SELECT语句:GROUP BY子句
10.1 简介
10.2 对一列分组
10.3 对两个或更多列分组
10.4 根据表达式分组
10.5 对空值的分组
10.6 带有排序的分组
10.7 GROUP BY子句的一般规则
10.8 GROUP-CONCAT函数
10.9 使用GROUP BY的复杂例子
10.10 使用ROLLUP的分组
10.11 练习解答
第11章 SELECT语句:HAVING子句
11.1 简介
11.2 HAVING子句的例子
11.3 没有GROUP BY子句的HAVING子句
11.4 HAVING子句的一般规则
11.5 练习解答
第12章 SELECT语句:ORDER BY子句
12.1 简介
12.2 按照列名排序
12.3 根据表达式排序
12.4 使用顺序号码排序
12.5 按照升序和降序排序
12.6 对空值排序
12.7 练习解答
第13章 SELECT语句:LIMIT子句
13.1 简介
13.2 获取最前面的值
13.3 使用LIMIT子句的子查询
13.4 带有偏移量的LIMIT
13.5 SQL_CALC_FOUND_ROWS选择选项
13.6 练习解答
第14章 组合表表达式
14.1 简介
14.2 使用UNION组合
14.3 使用UNINON的规则
14.4 保留重复的行
14.5 集合运算符和空值
14.6 练习解答
第15章 用户变量和SET语句
15.1 简介
15.2 使用SET语句定义变量
15.3 使用SELECT语句定义变量
15.4 用户变量的应用区域
15.5 用户变量的生命期
15.6 DO语句
15.7 练习解答
第16章 HANDLER语句
16.1 简介
16.2 HANDLER语句的简单示例
16.3 打开一个句柄
16.4 浏览句柄的行
16.5 关闭句柄
16.6 练习解答
第17章 更新表
17.1 简介
17.2 插入新的一行
17.3 使用另一个表中的行来填充一个表
17.4 更新行中的值
17.5 更新多个表中的值
17.6 替代已有的行
17.7 从一个表中删除行
17.8 从多个表中删除行
17.9 TRUNCATE语句
17.10 练习解答
第18章 载入和卸载数据
18.1 简介
18.2 卸载数据
18.3 载入数据
第19章 使用XML文档
19.1 XML概述
19.2 存储XML文档
19.3 查询XML文档
19.4 使用位置查询
19.5 XPath的扩展表示法
19.6 带有条件XPath表达式
19.7 修改XML文档
第三部分 创建数据库对象
第20章 创建表
20.1 简介
20.2 创建新表
20.3 列的数据类型
20.3.1 整数数据类型
20.3.2 小数数据类型
20.3.3 浮点数据类型
20.3.4 位数据类型
20.3.5 字符数据类型
20.3.6 时间日期类型
20.3.7 Blob数据类型
20.3.8 几何数据类型
20.4 添加数据类型选项
20.4.1 数据类型选项UNSIGNED
20.4.2 数据类型选项ZEROFILL
20.4.3 数据类型选项AUTO_INCREMENT
20.4.4 数据类型选项SERIAL DEFAULT VALUE
20.5 创建临时表
20.6 如果表已经存在
20.7 复制表
20.8 命令表和列
20.9 列选项:Default和Comment
20.10 表选项
20.10.1 ENGINE表选项
20.1 0.2 AUTO_INCREMENT表选项
20.10.3 COMMENT表选项
20.10.4 AVG_ROW_LENGTH、MAX_ROWS和MIN_ROWS表选项
20.11 CSV存储引擎
20.12 表和目录
20.13 练习解答
第21章 声明完整性约束
21.1 简介
21.2 主键
21.3 替代键
21.4 外键
21.5 参照动作
21.6 Check完整性约束
21.7 命名完整性约束
21.8 删除完整性约束
21.9 完整性约束和目录
21.10 练习解答
第22章 字符集和校对
22.1 简介
22.2 可用的字符集和校对
22.3 给列分配字符集
22.4 给列分配校对
22.5 带有字符集和校对的表达式
22.6 使用校对排序和分组
22.7 表达式的可压缩性
22.8 相关的系统变量
22.9 字符集和目录
22.10 练习解答
第23章 ENUM和SET类型
23.1 简介
23.2 ENUM数据类型
23.3 SET数据类型
23.4 练习解答
第24章 修改和删除表
24.1 简介
24.2 删除整个表
24.3 重命令表
24.4 修改表结构
24.5 修改列
24.6 修改完整性约束
24.7 练习解答
第25章 使用索引
25.1 简介
25.2 行、表和文件
25.3 索引是如何工作的
25.4 处理一条SELECT语句的步骤
25.5 创建索引
25.6 在定义表时定义索引
25.7 删除索引
25.8 索引和主键
25.9 大PLAYERS_XXL表
25.10 为索引选择列
25.10.1 候选键上的唯一索引
25.10.2 外键上的索引
25.10.3 包含在选择标准中的列上的索引
25.10.4 在列的组合上的索引
25.10.5 用来排序的列上的索引
25.11 索引和目录
25.12 练习解答
第26章 视图
26.1 简介
26.2 创建视图
26.3 视图的列名
26.4 更新视图:使用CHECK OPTION
26.5 视图的选项
26.6 删除视图
26.7 视图和目录
26.8 对更新视图的限制
26.9 处理视图语句
26.10 视图的应用程序区域
26.10.1 例程语句的简化
26.10.2 重新组织表
26.10.3 SELECT语句的分步编写
26.10.4 声明完整性约束
26.10.5 数据安全性
26.11 练习解答
第27章 创建数据库
27.1 简介
27.2 数据库和目录
27.3 新建数据库
27.4 修改数据库
27.5 删除数据库
第28章 用户和数据安全性
28.1 简介
28.2 添加和删除用户
28.3 修改用户名
28.4 修改密码
28.5 授予表权限和列权限
28.6 授予数据库权限
28.7 授予用户权限
28.8 权限的传递:WITH GRANT OPTION
28.9 限制权限
28.10 在目录中记录权限
28.11 回收权限
28.12 视图和通过视图的安全性
28.13 练习解答
第29章 表维护语句
29.1 简介
29.2 ANALYZE TABLE语句
29.3 CHECKSUM TABLE语句
29.4 OPTIMIZE TABLE语句
29.5 CHECK TABLE语句
29.6 REPAIR TABLE语句
29.7 BACKUP TABLE语句
29.8 RESTORE TABLE语句
第30章 SHOW、DESCRIBE和HELP语句
30.1 简介
30.2 SHOW语句概览
30.3 其他SHOW语句
30.4 DESCRIBE语句
30.5 HELP语句
第四部分 过程式数据库对象
第31章 存储过程
31.1 简介
31.2 存储过程的简例
31.3 存储过程的参数
31.4 存储过程体
31.5 局部变量
31.6 SET语句
31.7 流程控制语句
31.8 调用存储过程
31.9 使用SELECT INTO查询数据
31.10 出错消息、处理程序和条件
31.11 使用一个游标来获取数据
31.12 包含不带游标的SELECT语句
31.13 存储过程和用户变量
31.14 存储过程的特征
31.15 存储过程和目录
31.16 删除存储过程
31.17 存储过程的安全性
31.18 存储过程的优点
第32章 存储函数
32.1 简介
32.2 存储函数的例子
32.3 存储函数的更多内容
32.4 删除存储函数
第33章 触发器
33.1 简介
33.2 触发器的例子
33.3 更多复杂的例子
33.4 作为完整性约束的触发器
33.5 删除触发器
33.6 触发器和目录
33.7 练习解答
第34章 事件
34.1 什么是事件
34.2 创建事件
34.3 事件的属性
34.4 修改事件
34.5 删除事件
34.6 事件和权限
34.7 事件和目录
第五部分 SQL编程
第35章 MySQL和PHP
35.1 简介
35.2 登录到MySQL
35.3 选择数据
35.4 创建索引
35.5 获取出错消息
35.6 会话中的多个连接
35.7 带有参数的SQL语句
35.8 带有一行的SELECT语句
35.9 带有多行的SELECT语句
35.10 带有空值的SELECT语句
35.11 查询有关表达式的数据
35.12 查询目录
35.13 保留的MYSQL函数
第36章 动态SQL
36.1 简介
36.2 使用预处理SQL语句
36.3 使用用户变量的预处理语句
36.4 使用参数的预处理语句
36.5 存储过程中的预处理语句
第37章 事务和多用户使用
37.1 简介
37.2 什么是事务
37.3 开始事务
37.4 保存点
37.5 存储过程和事务
37.6 多用户使用的问题
37.6.1 脏读或未提交的读
37.6.2 非重复读
37.6.3 幻读
37.6.4 遗失更新
37.7 锁定
37.8 死锁
37.9 LOCK TABLE和UNLOCK TABLE语句
37.10 隔离级
37.11 等待一个锁
37.12 处理语句的时刻
37.13 使用应用程序锁
37.14 练习解答