MySQL核心技术与最佳实践

MySQL核心技术与最佳实践

第一篇 关系数据库设计

1 数据库设计概述

1.1 数据库概述
1.1.1 关系数据库管理系统
1.1.2 关系数据库
1.1.3 结构化查询语言SQL
1.2 数据库设计的相关知识
1.2.1 商业知识和沟通技能
1.2.2 数据库设计辅助工具
1.2.3 “选课系统”概述
1.2.4 定义问题域
1.2.5 编码规范
1.3 E-R图
1.3.1 实体和属性
1.3.2 关系
1.3.3 E-R图的设计原则
1.4 关系数据库设计
1.4.1 为每个实体建立一张数据库表
1.4.2 为每张表定义一个主键
1.4.3 增加外键表示一对多关系
1.4.4 建立新表表示多对多关系
1.4.5 为字段选择合适的数据类型
1.4.6 定义约束(constraint)条件
1.4.7 评价数据库表设计的质量
1.4.8 使用规范化减少数据冗余
1.4.9 避免数据经常发生变化
习题

第二篇 MySQL 基础

2 MySQL 基础知识

2.1 MySQL概述
2.1.1 MySQL的特点
2.1.2 MySQL服务的安装
2.1.3 MySQL服务的配置
2.1.4 启动与停止MySQL服务
2.1.5 MySQL配置文件
2.1.6 MySQL客户机
2.1.7 连接MySQL服务器
2.2 字符集以及字符序设置
2.2.1 字符集及字符序概念
2.2.2 MySQL字符集与字符序
2.2.3 MySQL字符集的转换过程
2.2.4 MySQL字符集的设置
2.2.5 SQL脚本文件
2.3 MySQL数据库管理
2.3.1 创建数据库
2.3.2 查看数据库
2.3.3 显示数据库结构
2.3.4 选择当前操作的数据库
2.3.5 删除数据库
2.4 MySQL表管理
2.4.1 MyISAM和InnoDB存储引擎
2.4.2 设置默认的存储引擎
2.4.3 创建数据库表
2.4.4 显示表结构
2.4.5 表记录的管理
2.4.6 InnoDB表空间
2.4.7 删除表
2.5 系统变量
2.5.1 全局系统变量与会话系统变量
2.5.2 查看系统变量的值
2.5.3 设置系统变量的值
2.6 MySQL数据库备份和恢复
习题

3 MySQL 表结构的管理

3.1 MySQL数据类型
3.1.1 MySQL整数类型
3.1.2 MySQL小数类型
3.1.3 MySQL字符串类型
3.1.4 MySQL日期类型
3.1.5 MySQL复合类型
3.1.6 MySQL二进制类型
3.1.7 选择合适的数据类型
3.2 创建表
3.2.1 设置约束
3.2.2 设置自增型字段
3.2.3 其他选项的设置
3.2.4 创建“选课系统”数据库表
3.2.5 复制一个表结构
3.3 修改表结构
3.3.1 修改字段相关信息
3.3.2 修改约束条件
3.3.3 修改表的其他选项
3.3.4 修改表名
3.4 删除表
3.5 索引
3.5.1 理解索引
3.5.2 索引关键字的选取原则
3.5.3 索引与约束
3.5.4 创建索引
3.5.5 删除索引
习题

4 表记录的更新操作

4.1 表记录的插入
4.1.1 使用insert语句插入新记录
4.1.2 更新操作与字符集
4.1.3 关于自增型字段
4.1.4 批量插入多条记录
4.1.5 使用insert…select插入结果集
4.1.6 使用replace插入新记录
4.2 表记录的修改
4.3 表记录的删除
4.3.1 使用delete删除表记录
4.3.2 使用truncate清空表记录
4.4 MySQL特殊字符序列
习题

5 表记录的检索

5.1 select语句概述
5.1.1 使用select子句指定字段列表
5.1.2 使用谓词过滤记录
5.1.3 使用from子句指定数据源
5.1.4 多表连接
5.2 使用where子句过滤结果集
5.2.1 使用单一的条件过滤结果集
5.2.2 is NULL运算符
5.2.3 select语句与字符集
5.2.4 使用逻辑运算符
5.2.5 使用like进行模糊查询
5.3 使用orderby子句对结果集排序
5.4 使用聚合函数汇总结果集
5.5 使用groupby子句对记录分组统计
5.5.1 group by子句与聚合函数
5.5.2 group by子句与having子句
5.5.3 group by子句与group_concat()函数
5.5.4 group by子句与with rollup选项
5.6 合并结果集
5.7 子查询
5.7.1 子查询与比较运算符
5.7.2 子查询与in运算符
5.7.3 子查询与exists逻辑运算符
5.7.4 子查询与any运算符
5.7.5 子查询与all运算符
5.8 选课系统综合查询
5.9 使用正则表达式模糊查询
5.10 全文检索
5.10.1 全文检索的简单应用
5.10.2 全文检索方式
5.10.3 布尔检索模式的复杂应用
5.10.4 MySQL全文检索的注意事项
5.10.5 InnoDB表的全文检索
习题

第三篇 MySQL 编程

6 MySQL 编程基础

6.1 MySQL编程基础知识
6.1.1 常量
6.1.2 用户自定义变量
6.1.3 运算符与表达式
6.1.4 begin-end语句块
6.1.5 重置命令结束标记
6.2 自定义函数
6.2.1 创建自定义函数的语法格式
6.2.2 函数的创建与调用
6.2.3 函数的维护
6.2.4 条件控制语句
6.2.5 循环语句
6.3 系统函数
6.3.1 数学函数
6.3.2 字符串函数
6.3.3 数据类型转换函数
6.3.4 条件控制函数
6.3.5 系统信息函数
6.3.6 日期和时间函数
6.3.7 其他常用的MySQL函数
6.4 中文全文检索的模拟实现
习题

7 视图与触发器

7.1 视图
7.1.1 创建视图
7.1.2 查看视图的定义
7.1.3 视图在“选课系统”中的应用
7.1.4 视图的作用
7.1.5 删除视图
7.1.6 检查视图
7.1.7 local与cascade检查视图
7.2 触发器
7.2.1 准备工作
7.2.2 使用触发器实现检查约束
7.2.3 使用触发器维护冗余数据
7.2.4 使用触发器模拟外键级联选项
7.2.5 查看触发器的定义
7.2.6 删除触发器
7.2.7 使用触发器的注意事项
7.3 临时表
7.3.1 临时表概述
7.3.2 临时表的创建、查看与删除
7.3.3 “选课系统”中临时表的使用
7.3.4 使用临时表的注意事项
7.4 派生表(derivedtable)
7.5 子查询、视图、临时表、派生表
习题

8 存储过程与游标

8.1 存储过程
8.1.1 创建存储过程的语法格式
8.1.2 存储过程的调用
8.1.3 “选课系统”的存储过程
8.1.4 查看存储过程的定义
8.1.5 删除存储过程
8.1.6 存储过程与函数的比较
8.2 错误触发条件和错误处理
8.2.1 自定义错误处理程序
8.2.2 自定义错误触发条件
8.2.3 自定义错误处理程序说明
8.3 游标
8.3.1 使用游标
8.3.2 游标在“选课系统”中的使用
8.4 预处理SQL语句
8.4.1 预处理SQL语句使用步骤
8.4.2 “选课系统”中预处理SQL语句的使用
8.4.3 预处理SQL语句的复杂应用
8.4.4 静态SQL语句与预处理SQL语句
8.5 存储程序的说明
习题

9 事务机制与锁机制

9.1 事务机制
9.1.1 事务机制的必要性
9.1.2 关闭MySQL自动提交
9.1.3 回滚
9.1.4 提交
9.1.5 事务
9.1.6 保存点
9.1.7 “选课系统”中的事务
9.2 锁机制
9.2.1 锁机制的必要性
9.2.2 MySQL锁机制的基础知识
9.2.3 MyISAM表的表级锁
9.2.4 InnoDB表的行级锁
9.2.5 “选课系统”中的行级锁
9.2.6 InnoDB表的意向锁
9.2.7 InnoDB行级锁与索引之间的关系
9.2.8 间隙锁与死锁
9.2.9 死锁与锁等待
9.3 事务的ACID特性
9.3.1 事务的ACID特性
9.3.2 事务的隔离级别与并发问题
9.3.3 设置事务的隔离级别
9.3.4 使用间隙锁避免幻读现象
9.4 事务与锁机制注意事项
习题

第四篇 综合实训

10 网上选课系统的开发

10.1 PHP预备知识
10.1.1 为何选用B/S结构以及PHP脚本语言
10.1.2 PHP脚本语言概述
10.1.3 PHP脚本程序的工作流程
10.1.4 Web服务器的部署
10.1.5 注意事项
10.2 软件开发生命周期SDLC
10.3 网上选课系统的系统规划
10.3.1 网上选课系统的目标
10.3.2 网上选课系统的可行性分析
10.3.3 网上选课系统的项目进度表
10.3.4 网上选课系统的人员分工
10.4 网上选课系统的系统分析
10.4.1 网上选课系统的功能需求分析
10.4.2 网上选课系统的非功能需求分析
10.5 网上选课系统的系统设计
10.6 网上选课系统的系统实施
10.6.1 准备工作
10.6.2 制作PHP连接MySQL服务器函数
10.6.3 制作PHP权限系统函数
10.6.4 首页index.php的开发
10.6.5 教师注册模块的开发
10.6.6 登录模块的开发
10.6.7 注销模块的开发
10.6.8 添加班级模块的开发
10.6.9 学生注册模块的开发
10.6.10 密码重置模块
10.6.11 申报课程模块
10.6.12 课程列表显示模块
10.6.13 审核申报课程
10.6.14 取消已审核课程
10.6.15 浏览自己申报的课程
10.6.16 删除课程
10.6.17 学生选修或者调换已经审核的课程
10.6.18 查看自己选修的课程
10.6.19 取消选修课程
10.6.20 查看课程的学生信息列表
10.6.21 查看选修人数少于30人的课程信息
10.7 界面设计与MVC模式
10.8 网上选课系统的测试
习题

第五篇 MySQL 管理及维护

11 MySQL 日志与事件

11.1 MySQL日志
11.1.1 数据皆需要缓存
11.1.2 MySQL错误日志
11.1.3 MySQL普通查询日志
11.1.4 MySQL慢查询日志
11.1.5 MySQL慢查询日志的查看
11.2 二进制日志
11.2.1 启动二进制日志
11.2.2 二进制日志文件内容的查看
11.2.3 获取当前的二进制日志文件及偏移位置
11.2.4 使用二进制日志恢复数据库
11.2.5 与MySQL二进制日志有关的参数
11.2.6 二进制日志的清理
11.3 InnoDB事务日志
11.4 日志文件的备份
11.5 MySQL事件
11.5.1 创建MySQL事件
11.5.2 开启MySQL事件调度器
11.5.3 查看MySQL事件的定义
11.5.4 删除MySQL事件的定义
习题

12 MySQL 备份与恢复

12.1 备份与恢复概述
12.1.1 防止数据丢失的方法
12.1.2 数据备份概述
12.2 逻辑备份与逻辑恢复
12.2.1 使用select…into outfile…备份表数据
12.2.2 恢复表数据
12.2.3 使用mysqldump备份数据库
12.2.4 逻辑备份综合示例
12.2.5 二进制日志恢复数据库的综合示例
12.3 物理备份与热备份
12.3.1 物理备份的所需文件
12.3.2 MyISAM表物理备份、热备份工具
12.3.3 InnoDB表物理备份、热备份工具
12.3.4 Xtrabackup的工作原理
12.3.5 使用Xtrabackup实现完全备份与增量备份
12.3.6 使用Xtrabackup实现数据库恢复
12.4 MySQL复制(replication)
12.4.1 MySQL复制的实现原理
12.4.2 MySQL复制的实现
12.4.3 复制线程的状态
12.4.4 与复制有关的文件
12.4.5 复制的配置
12.4.6 MySQL复制模式
12.4.7 自增型字段冲突问题
12.4.8 事件损坏
12.4.9 小结
12.5 备份策略
习题

13 MySQL 安全管理

13.1 MySQL安全管理
13.2 MySQL账户与权限表
13.2.1 grant命令语法格式
13.2.2 创建MySQL服务实例级别的账户
13.2.3 创建MySQL数据库级别的账户
13.2.4 创建MySQL表级别的账户
13.2.5 创建MySQL字段级别的账户
13.2.6 创建MySQL存储程序级别的账户
13.2.7 注意事项
13.2.8 host权限表
13.3 MySQL账户管理
13.3.1 使用create user创建MySQL账户
13.3.2 查看MySQL账户信息
13.3.3 删除已有账户
13.3.4 修改已有账户的信息
13.3.5 MySQL账户的资源次数限制
13.3.6 使用更新语句修改MySQL账户信息
13.3.7 权限的生效时机
13.4 MySQL安全管理的注意事项
13.4.1 MySQL账户名重名问题
13.4.2 root账号密码丢失问题
13.4.3 消除MySQL安全隐患
13.4.4 MySQL安全管理的其他注意事项
习题

14 MySQL 优化

14.1 基础知识
14.1.1 影响数据库系统性能的组件
14.1.2 参数信息与状态信息
14.1.3 缓存机制
14.1.4 缓存的分类
14.1.5 超时
14.2 MySQL连接的优化
14.3 缓存的优化
14.3.1 查询缓存Query Cache
14.3.2 结果集缓存
14.3.3 排序缓存
14.3.4 join连接缓存
14.3.5 表缓存Cache与表结构定义缓存Cache
14.3.6 表扫描缓存buffer
14.3.7 MyISAM索引缓存buffer
14.3.8 日志缓存
14.3.9 预读机制
14.3.10 延迟更新
14.3.11 内存表与临时表
14.4 InnoDB优化
14.4.1 InnoDB缓存池
14.4.2 InnoDB缓存池内部结构
14.4.3 InnoDB缓存池预热
14.4.4 InnoDB缓存池的状态信息
14.4.5 常见的InnoDB参数设置
14.4.6 InnoDB实时监控
14.5 优化表
14.5.1 优化表结构
14.5.2 表的拆分
14.5.3 分区
14.5.4 表分析与表检查
14.5.5 NULL值对统计信息的影响
14.5.6 记录的格式
14.6 SQL语句优化
14.6.1 了解SQL的执行频率
14.6.2 定位执行效率较低的SQL语句
14.6.3 分析select语句
14.6.4 索引与select语句
14.6.5 分页与select
14.6.6 SQL语句其他注意事项
14.6.7 profiling性能分析工具
14.7 锁资源的优化
14.7.1 表级锁资源竞争
14.7.2 表级锁资源竞争的解决方案
14.7.3 行级锁的资源竞争
14.7.4 行级锁资源竞争的解决方案
14.7.5 禁用InnoDB间隙锁
14.7.6 事务监控与锁监控
14.7.7 元数据锁metadata locks

15 MySQL Cluster

15.1 MySQLCluster简介
15.1.1 MySQL集群的组成
15.1.2 MySQL集群架构
15.2 MySQLCluster环境搭建
15.2.1 准备工作
15.2.2 数据节点的配置
15.2.3 SQL节点的配置
15.2.4 管理节点的配置
15.2.5 MySQL集群的启动
15.2.6 集群测试

思维导图

MySQL核心技术与最佳实践

防止博客图床图片失效,防止图片源站外链:

http://www.processon.com/chart_image/5e5b2f63e4b0cb56dab11439.png)

思维导图在线编辑链接:

https://www.processon.com/view/5e5b2f63e4b0cb56dab11436

原文地址:https://www.cnblogs.com/jingle1267/p/12826133.html