作为世界上最受欢迎的开源数据库管理系统,MySQL具有成本低廉、体积小、便于安装、性能优越、功能强大等特点,很多企业将MySQL作为*数据库管理系统。《MySQL核心技术与*实践》从关系数据库设计、MySQL基础、MySQL编程、MySQL管理及维护4个角度,深入浅出地对MySQL的核心技术进行了详细的介绍,并通过综合实训提供了MySQL核心技术的*实践。
《MySQL核心技术与*实践》尽量将抽象问题形象化、具体化,复杂问题图形化、简单化,突出自学和模仿的特点,内容丰富,讲解深入,具有很强的实战性和可操作性。《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 使用order by子句对结果集排序
- 5.4 使用聚合函数汇总结果集
- 5.5 使用group by子句对记录分组统计
- 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 派生表(derived table)
- 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 MySQL Cluster简介
- 15.1.1 MySQL集群的组成
- 15.1.2 MySQL集群架构
- 15.2 MySQL Cluster环境搭建
- 15.2.1 准备工作
- 15.2.2 数据节点的配置
- 15.2.3 SQL节点的配置
- 15.2.4 管理节点的配置
- 15.2.5 MySQL集群的启动
- 15.2.6 集群测试
- 参考文献