目录 第1章 数据库基础 1 1.1 数据模型 1 1.1.1 概念模型 1 1.1.2 逻辑模型 3 1.1.3 数据库物理模型 6 1.2 数据库系统 7 1.2.1 数据库 7 1.2.2 数据库管理系统(DBMS) 7 1.2.3 数据库应用系统(DBAS) 8 1.2.4 数据库系统的组成和特点 9 1.3 思考和练习 11 第2章 MySQL的安装、运行和工具 13 2.1 MySQL简介 13 2.2 MySQL8.0的安装与运行 14 2.3 在macOS 系统中安装MySQL 20 2.3.1 安装和配置MySQL Server 20 2.3.2 安装和配置MySQL Workbench 26 2.4 在Microsoft Windows系统中安装MySQL 27 2.5 思考和练习 38 第3章 数据类型 39 3.1 为何设置数据类型 39 3.1.1 数据验证 39 3.1.2 文档 41 3.1.3 优化存储 41 3.1.4 性能 42 3.1.5 正确排序 42 3.2 MySQL的数据类型 42 3.2.1 数值类型 43 3.2.2 日期和时间类型 44 3.2.3 字符串与二进制类型 45 3.2.4 JSON数据类型 47 3.2.5 空间数据类型 48 3.2.6 混合数据类型 48 3.3 不同数据类型的性能 50 3.4 应该选择何种数据类型 50 3.5 思考和练习 52 第4章 创建和管理表与关系 54 4.1 打开和保存文件 54 4.2 创建表和视图 56 4.2.1 添加表 57 4.2.2 添加列 58 4.2.3 添加索引 61 4.2.4 添加外键 63 4.2.5 创建视图 65 4.2.6 创建例程 66 4.3 创建关系 67 4.4 思考和练习 71 第5章 编辑数据 72 5.1 连接到Edit Data 72 5.2 插入数据 76 5.3 更新数据 80 5.4 删除数据 82 5.5 多数据编辑 84 5.6 思考和练习 86 第6章 查询 87 6.1 查询概述 87 6.1.1 查询与表的区别 88 6.1.2 查询的功能 88 6.1.3 查询的类型 89 6.2 数据库查询 90 6.2.1 SELECT语句对列的查询 90 6.2.2 SELECT语句对行的选择 93 6.2.3 对查询结果进行排序 100 6.2.4 对查询结果进行统计 101 6.2.5 对查询结果生成新表 104 6.3 连接查询 105 6.3.1 交叉连接 105 6.3.2 内连接 106 6.3.3 外连接 109 6.4 嵌套查询 111 6.4.1 带有IN谓词的子查询 112 6.4.2 带有比较运算符的子查询 113 6.4.3 带有ANY、SOME或ALL关键字的子查询 114 6.4.4 带有EXISTS谓词的子查询 115 6.5 联合查询 118 6.5.1 UNION操作符 118 6.5.2 INTERSECT操作符 119 6.5.3 EXCEPT操作符 120 6.6 使用排序函数 121 6.6.1 ROW_NUMBER()函数 121 6.6.2 RANK()函数 122 6.6.3 DENSE_RANK()函数 123 6.6.4 NTILE()函数 124 6.7 动态查询 125 6.8 思考和练习 127 第7章 运算符、表达式和系统函数 128 7.1 Transact-SQL概述 128 7.1.1 Transact-SQL语法约定 129 7.1.2 多部分名称 129 7.1.3 如何命名标识符 130 7.1.4 系统保留字 131 7.1.5 通配符 133 7.2 常量 133 7.3 变量 134 7.4 运算符和表达式 135 7.4.1 运算符 135 7.4.2 表达式 137 7.5 MySQL函数简介 139 7.5.1 字符串函数 139 7.5.2 数学函数 145 7.5.3 日期时间函数 149 7.5.4 类型转换函数 156 7.5.5 JSON函数 159 7.5.6 空间数据处理函数 163 7.5.7 窗口函数 168 7.5.8 其他函数 171 7.6 思考和练习 173 第8章 视图 174 8.1 概述 174 8.1.1 视图的创建与使用 175 8.1.2 视图的优点和用途 175 8.1.3 视图的限制和注意事项 176 8.2 创建视图 176 8.2.1 创建单表视图 177 8.2.2 创建多表联合视图 178 8.2.3 基于视图创建视图 179 8.3 查看视图 180 8.3.1 查看数据库的表对象和视图对象 181 8.3.2 使用DESCRIBE | DESC命令查看视图的结构信息 181 8.3.3 使用SHOW TABLE STATUS LIKE语句查看视图的属性信息 182 8.3.4 使用SHOW CREATE VIEW语句查看视图的定义信息 184 8.3.5 通过系统表查看视图信息 185 8.3.6 查看视图中的数据 186 8.4 修改视图 187 8.4.1 使用 CREATE OR REPLACE VIEW语句修改视图 188 8.4.2 使用ALTER语句修改视图 188 8.5 更新视图 189 8.6 删除视图 193 8.7 思考和练习 194 第9章 触发器 195 9.1 概述 195 9.1.1 为什么使用触发器 196 9.1.2 触发器的优缺点 197 9.1.3 触发器的种类 197 9.2 创建触发器 199 9.2.1 创建基本表 199 9.2.2 创建只有一个执行语句的触发器 200 9.2.3 创建有多个执行语句的触发器 204 9.3 查看触发器 206 9.3.1 利用SHOW TRIGGERS语句查看触发器信息 206 9.3.2 在TRIGGERS表中查看触发器信息 207 9.4 删除触发器 209 9.5 思考和练习 210 第10章 存储过程和存储函数 211 10.1 概述 211 10.1.1 为什么要使用存储过程和存储函数 212 10.1.2 使用存储过程和存储函数的缺点 212 10.2 创建存储过程和存储函数 213 10.2.1 创建存储过程 213 10.2.2 创建存储函数 216 10.3 存储过程体和存储函数体 217 10.3.1 系统变量 217 10.3.2 用户变量 218 10.3.3 分支结构IF 220 10.3.4 分支结构之 CASE 220 10.3.5 循环结构之LOOP 221 10.3.6 循环结构之WHILE 222 10.3.7 循环结构之REPEAT 223 10.4 查看存储过程和存储函数 223 10.5 修改存储过程和存储函数 225 10.6 删除存储过程和存储函数 226 10.7 思考和练习 226 第11章 访问控制与安全管理 227 11.1 用户账户管理 227 11.1.1 用户与角色 228 11.1.2 账户类别 229 11.1.3 账户管理 231 11.1.4 账户管理示例 232 11.2 账户权限管理 234 11.2.1 MySQL提供的权限 234 11.2.2 静态权限 235 11.2.3 动态权限 236 11.3 思考和练习 239 第12章 备份与恢复 240 12.1 MySQL数据库备份与恢复方法 240 12.1.1 数据库备份 241 12.1.2 完全备份 245 12.1.3 数据恢复 246 12.1.4 第三方数据库备份工具 247 12.2 MySQL日志文件 248 12.2.1 二进制日志 248 12.2.2 重做日志 250 12.2.3 查询日志 251 12.2.4 慢查询日志 252 12.2.5 错误日志 253 12.3 思考和练习 254 第13章 PHP与MySQL数据库编程 255 13.1 PHP编程基础 255 13.1.1 PHP标记符 256 13.1.2 PHP注释 257 13.1.3 PHP语句和语句块 258 13.1.4 PHP的数据类型 259 13.1.5 PHP数据的输出 261 13.1.6 PHP编码规范 262 13.2 PHP函数 263 13.2.1 PHP内建函数 263 13.2.2 PHP用户定义函数 264 13.3 数组的使用 265 13.3.1 数组定义语法 266 13.3.2 数组特点 267 13.3.3 多维数组 267 13.3.4 数组的遍历 268 13.3.5 数组操作的相关函数 269 13.3.6 PHP数组操作案例 270 13.4 PHP面向对象程序设计 271 13.4.1 面向对象编程的特点 272 13.4.2 类 272 13.4.3 对象 273 13.4.4 PHP中的继承与接口 273 13.4.5 魔术方法 276 13.5 在PHP中访问MySQL数据库 279 13.5.1 PHP操作MySQL数据库的方法 279 13.5.2 管理MySQL数据库中的数据 281 13.5.3 预处理语句 283 13.5.4 PHP访问MySQL数据库案例 284 13.6 思考和练习 286 第14章 MySQL数据库发展历程与展望 287 14.1 MySQL数据库发展过程 287 14.2 MySQL数据库的特点 288 14.2.1 MySQL是目前流行的开源数据库 288 14.2.2 MySQL数据库全面赋能产业优化升级 289 14.2.3 MySQL数据库开源风险不断加剧 289 14.2.4 MySQL赋能国产开源数据库快速演进 290 14.3 GreatSQL开源数据库技术增强功能 291 14.3.1 组复制技术增强 291 14.3.2 双活架构实现数据库高可用 291 14.3.3 GreatSQL数据库优化突破性能瓶颈 291 14.3.4 GreatSQL数据库增强安全功能 292 14.3.5 GreatSQL助力MySQL 数据库上云 292 14.4 国内MySQL数据库产业应用现状 293 14.4.1 金融行业 293 14.4.2 电信行业 294 14.4.3 能源行业 294 14.5 MySQL 5.7停服迁移升级方案 294 14.6 国内开源数据库的发展与展望 295 14.6.1 国产开源数据库社区发展趋势 295 14.6.2 国内开源数据库产业发展展望 295 14.7 思考和练习 296 参考文献 297