目录 第1章 认识数据库与MySQL 001 1.1 认识数据库 001 1.1.1 数据库的基本概念 001 1.1.2 数据库系统的组成 002 1.1.3 数据库系统的特点 003 1.2 认识MySQL数据库 003 1.2.1 MySQL系统特性 004 1.2.2 选择MySQL版本 004 1.2.3 MySQL版本的命名机制 004 1.3 安装与配置MySQL 8.0 005 1.3.1 下载MySQL软件 005 1.3.2 安装MySQL软件 006 1.3.3 配置MySQL软件 008 1.4 启动并登录MySQL数据库 012 1.4.1 启动MySQL服务 012 1.4.2 登录MySQL数据库 013 1.4.3 配置Path变量 014 1.5 卸载MySQL数据库 016 1.6 课后习题与练习 017 1.7 新手疑难问题解答 018 1.8 实战训练 018 第2章 MySQL的管理工具 019 2.1 认识常用图形管理工具 019 2.1.1 MySQL Workbench 019 2.1.2 phpMyAdmin 020 2.1.3 Navicat for MySQL 020 2.2 MySQL Workbench的应用 021 2.2.1 下载MySQL Workbench 021 2.2.2 安装MySQL Workbench 022 2.2.3 创建数据库连接 023 2.2.4 创建与删除数据库 025 2.2.5 创建和删除新的数据表 026 2.2.6 添加与修改数据表记录 028 2.2.7 查询表中的数据记录 028 2.2.8 修改数据表的数据结构 029 2.3 phpMyAdmin的应用 029 2.3.1 下载并启动phpMyAdmin 029 2.3.2 创建与删除数据库 031 2.3.3 创建与删除数据表 031 2.3.4 添加数据表记录 033 2.3.5 数据库的备份 034 2.3.6 数据库的还原 034 2.4 Navicat for MySQL的应用 035 2.4.1 下载与安装Navicat for MySQL 036 2.4.2 连接MySQL服务器 037 2.4.3 创建与删除数据库 038 2.4.4 创建与删除数据表 039 2.4.5 添加与修改数据记录 040 2.4.6 查询数据表中的数据 041 2.4.7 数据库备份和还原 041 2.5 以图形方式管理MySQL用户 043 2.5.1 创建用户账户 043 2.5.2 删除用户账户 045 2.5.3 加密用户账户 045 2.5.4 用户权限管理 046 2.6 课后习题与练习 047 2.7 新手疑难问题解答 048 2.8 实战训练 049 第3章 数据库的创建与操作 050 3.1 MySQL数据库概述 050 3.1.1 数据库特点 050 3.1.2 数据库对象 051 3.1.3 系统数据库 052 3.2 创建数据库 053 3.2.1 使用CREATE DATABASE语句创建 053 3.2.2 使用mysqladmin命令创建 053 3.2.3 使用PHP脚本创建 054 3.3 选择与查看数据库 055 3.3.1 从命令提示窗口中选择 055 3.3.2 使用PHP脚本选择 055 3.3.3 使用命令查看数据库 056 3.4 删除数据库 056 3.4.1 使用DROP语句删除 056 3.4.2 使用mysqladmin命令删除 057 3.4.3 使用PHP脚本删除 057 3.5 数据库存储引擎 058 3.5.1 MySQL存储引擎简介 058 3.5.2 InnoDB存储引擎 060 3.5.3 MyISAM存储引擎 060 3.5.4 MEMORY存储引擎 061 3.5.5 存储引擎的选择 061 3.6 课后习题与练习 062 3.7 新手疑难问题解答 063 3.8 实战训练 063 第4章 数据表的创建与操作 064 4.1 数据表中能存放的数据类型 064 4.1.1 数值类型 064 4.1.2 日期和时间类型 066 4.1.3 字符串类型 066 4.1.4 选择数据类型 067 4.2 创建数据表 068 4.2.1 创建数据表的语法形式 068 4.2.2 使用CREATE语句创建数据表 068 4.3 查看数据表的结构 069 4.3.1 查看表基本结构 070 4.3.2 查看表详细结构 070 4.4 修改数据表 070 4.4.1 修改数据表的名称 070 4.4.2 修改字段数据类型 071 4.4.3 修改数据表的字段名 072 4.4.4 在数据表中添加字段 072 4.4.5 修改字段的排序方式 074 4.4.6 删除不需要的字段 075 4.5 删除数据表 075 4.5.1 删除没有被关联的表 075 4.5.2 删除被其他表关联的主表 076 4.6 课后习题与练习 077 4.7 新手疑难问题解答 079 4.8 实战训练 079 第5章 数据表的完整性约束 080 5.1 数据完整性及其分类 080 5.1.1 数据完整性的分类 080 5.1.2 表中的约束条件有哪些 081 5.2 主键约束 081 5.2.1 创建表时添加主键 081 5.2.2 修改表时添加主键 083 5.2.3 创建联合主键约束 084 5.2.4 删除表中的主键 085 5.3 外键约束 086 5.3.1 创建表时添加外键约束 086 5.3.2 修改表时添加外键约束 088 5.3.3 删除表中的外键约束 088 5.4 默认约束 089 5.4.1 创建表时添加默认约束 089 5.4.2 修改表时添加默认约束 090 5.4.3 删除表中的默认约束 090 5.5 唯一性约束 091 5.5.1 创建表时添加唯一性约束 091 5.5.2 修改表时添加唯一性约束 092 5.5.3 删除表中的唯一性约束 092 5.6 非空约束 093 5.6.1 创建表时添加非空约束 093 5.6.2 修改表时添加非空约束 094 5.6.3 删除表中的非空约束 094 5.7 字段的自增属性 095 5.7.1 创建表时添加自增属性 095 5.7.2 修改表时添加自增属性 096 5.7.3 删除表中的自增属性 096 5.8 课后习题与练习 096 5.9 新手疑难问题解答 097 5.10 实战训练 098 第6章 插入、更新与删除数据记录 100 6.1 向数据表中插入数据 100 6.1.1 给表里的所有字段插入数据 100 6.1.2 向表中添加数据时使用默认值 103 6.1.3 一次插入多条数据 104 6.1.4 通过复制表数据插入数据 105 6.2 更新数据表中的数据 107 6.2.1 更新表中的全部数据 107 6.2.2 更新表中指定单行数据 108 6.2.3 更新表中指定多行数据 109 6.3 删除数据表中的数据 109 6.3.1 根据条件清除数据 109 6.3.2 清空表中的数据 110 6.4 课后习题与练习 111 6.5 新手疑难问题解答 112 6.6 实战训练 112 第7章 数据表的简单查询 115 7.1 认识SELECT语句 115 7.2 数据的简单查询 116 7.2.1 查询表中所有数据 116 7.2.2 查询表中想要的数据 118 7.2.3 对查询结果进行计算 118 7.2.4 为结果列使用别名 119 7.2.5 在查询时去除重复项 119 7.2.6 在查询结果中给表取别名 119 7.2.7 使用LIMIT限制查询数据 120 7.3 使用WHERE子句进行条件查询 121 7.3.1 比较查询条件的数据查询 121 7.3.2 带BETWEEN AND的范围查询 122 7.3.3 带IN关键字的查询 123 7.3.4 带LIKE的字符匹配查询 124 7.3.5 未知空数据的查询 126 7.3.6 带AND的多条件查询 126 7.3.7 带OR的多条件查询 127 7.4 操作查询的结果 129 7.4.1 对查询结果进行排序 129 7.4.2 对查询结果进行分组 131 7.4.3 对分组结果过滤查询 133 7.5 使用集合函数进行统计查询 134 7.5.1 使用SUM()求列的和 134 7.5.2 使用AVG()求列平均值 135 7.5.3 使用MAX()求列最大值 135 7.5.4 使用MIN()求列最小值 136 7.5.5 使用COUNT()统计 137 7.6 课后习题与练习 138 7.7 新手疑难问题解答 139 7.8 实战训练 139 第8章 数据表的复杂查询 140 8.1 子查询 140 8.1.1 带比较运算符的子查询 140 8.1.2 带IN关键字的子查询 142 8.1.3 带ANY关键字的子查询 143 8.1.4 带ALL关键字的子查询 143 8.1.5 带SOME关键字的子查询 144 8.1.6 带EXISTS关键字的子查询 144 8.2 合并查询结果 145 8.2.1 合并查询的语法格式 145 8.2.2 合并查询的具体应用 145 8.3 内连接查询 147 8.3.1 笛卡儿积查询 147 8.3.2 内连接的简单查询 147 8.3.3 等值内连接查询 148 8.3.4 非等值内连接查询 149 8.3.5 自连接的内连接查询 149 8.3.6 带条件的内连接查询 149 8.4 外连接查询 150 8.4.1 认识外连接查询 150 8.4.2 左外连接查询 151 8.4.3 右外连接查询 151 8.5 使用正则表达式查询 152 8.5.1 查询以特定字符或字符串开头的记录 152 8.5.2 查询以特定字符或字符串结尾的记录 153 8.5.3 用符号“.”代替字符串中的任意一个字符 153 8.5.4 匹配指定字符中的任意一个 154 8.5.5 匹配指定字符以外的字符 155 8.5.6 匹配指定字符串 155 8.5.7 用“*”和“+”匹配多个字符 156 8.5.8 使用{M}或者{M,N}指定字符串连续出现的次数 156 8.6 课后习题与练习 157 8.7 新手疑难问题解答 158 8.8 实战训练 158 第9章 MySQL编程基础 159 9.1 MySQL语言编程 159 9.2 认识常量与变量 160 9.2.1 认识常量 160 9.2.2 定义变量 161 9.3 常用运算符及优先级 163 9.3.1 算术运算符 163 9.3.2 比较运算符 164 9.3.3 逻辑运算符 169 9.3.4 位运算符 171 9.3.5 运算符的优先级 173 9.4 认识流程控制语句 173 9.4.1 IF语句 174 9.4.2 CASE语句 174 9.4.3 LOOP语句 175 9.4.4 LEAVE语句 175 9.4.5 ITERATE语句 175 9.4.6 REPEAT语句 176 9.4.7 WHILE语句 176 9.5 课后习题与练习 177 9.6 新手疑难问题解答 178 9.7 实战训练 178 第10章 内置函数与自定义函数 179 10.1 数学函数 179 10.1.1 求绝对值和返回圆周率 180 10.1.2 获取数平方根与求余 180 10.1.3 获取四舍五入后的值 181 10.1.4 求数值的幂运算 182 10.1.5 求数值的对数运算值 182 10.1.6 角度与弧度的相互转换 183 10.1.7 求正弦值与余弦值 183 10.1.8 求正切值与余切值 183 10.2 字符串函数 184 10.2.1 计算字符串的字符数 185 10.2.2 计算字符串的长度 185 10.2.3 合并字符串 185 10.2.4 替换字符串 186 10.2.5 字母大小写转换 187 10.2.6 获取指定长度字符串 187 10.2.7 填充字符串 188 10.2.8 删除字符串的空格 188 10.3 日期和时间函数 189 10.3.1 获取当前日期和当前时间 190 10.3.2 获取当前日期和时间 191 10.3.3 获取UNIX格式的时间 191 10.3.4 返回UTC日期和返回UTC时间 192 10.3.5 获取指定日期的月份 192 10.3.6 获取指定日期的星期数 192 10.3.7 获取指定日期在一年中的星期周数 193 10.3.8 时间和秒钟的相互转换 194 10.3.9 日期和时间的加减运算 194 10.3.10 将日期和时间进行格式化 196 10.4 其他内置函数 197 10.4.1 条件判断函数 197 10.4.2 系统信息函数 199 10.4.3 数据加密函数 202 10.5 自定义函数 202 10.5.1 创建自定义函数 202 10.5.2 调用自定义函数 203 10.5.3 查看自定义函数 204 10.5.4 修改自定义函数 205 10.5.5 删除自定义函数 206 10.6 课后习题与练习 207 10.7 新手疑难问题解答 208 10.8 实战训练 208 第11章 视图的创建与应用 209 11.1 了解视图 209 11.1.1 视图的含义 209 11.1.2 视图的作用 210 11.2 创建视图 210 11.2.1 创建视图的语法格式 210 11.2.2 在单表上创建视图 211 11.2.3 在多表上创建视图 212 11.3 修改视图 213 11.3.1 修改视图的语法格式 213 11.3.2 使用CREATE OR REPLACE VIEW语句修改视图 214 11.3.3 使用ALTER语句修改视图 215 11.4 查看视图信息 216 11.4.1 使用DESCRIBE语句查看 216 11.4.2 使用SHOW TABLE STATUS语句查看 216 11.4.3 使用SHOW CREATE VIEW语句查看 217 11.4.4 在views表中查看视图详细信息 218 11.5 使用视图更新数据 218 11.5.1 通过视图插入数据 219 11.5.2 通过视图修改数据 220 11.5.3 通过视图删除数据 220 11.6 删除视图 221 11.6.1 删除视图的语法 221 11.6.2 删除不用的视图 222 11.7 课后习题与练习 222 11.8 新手疑难问题解答 223 11.9 实战训练 224 第12章 索引的创建与应用 225 12.1 了解索引 225 12.1.1 索引的概念 225 12.1.2 索引的作用 226 12.1.3 索引的分类 226 12.2 创建数据表时创建索引 226 12.2.1 创建普通索引 227 12.2.2 创建唯一索引 228 12.2.3 创建全文索引 229 12.2.4 创建单列索引 230 12.2.5 创建多列索引 230 12.2.6 创建空间索引 231 12.3 在已经存在的表上创建索引 232 12.3.1 创建普通索引 233 12.3.2 创建唯一索引 233 12.3.3 创建全文索引 234 12.3.4 创建单列索引 234 12.3.5 创建多列索引 235 12.3.6 创建空间索引 235 12.4 使用ALTER TABLE语句创建索引 236 12.4.1 创建普通索引 237 12.4.2 创建唯一索引 237 12.4.3 创建全文索引 238 12.4.4 创建单列索引 238 12.4.5 创建多列索引 238 12.4.6 创建空间索引 239 12.5 删除索引 239 12.5.1 使用ALTER TABLE语句删除索引 239 12.5.2 使用DROP INDEX语句删除索引 240 12.6 课后习题与练习 240 12.7 新手疑难问题解答 241 12.8 实战训练 242 第13章 触发器的创建与应用 243 13.1 了解触发器 243 13.2 创建触发器 244 13.2.1 创建一条执行语句的触发器 244 13.2.2 创建多条执行语句的触发器 246 13.3 查看触发器 247 13.3.1 使用SHOW TRIGGERS语句查看 247 13.3.2 通过INFORMATION_SCHEMA查看 247 13.4 删除触发器 249 13.5 课后习题与练习 249 13.6 新手疑难问题解答 250 13.7 实战训练 250 第14章 存储过程的创建与应用 251 14.1 了解存储过程 251 14.1.1 什么是存储过程 251 14.1.2 存储过程的作用 252 14.2 创建存储过程 252 14.2.1 创建存储过程的语法格式 252 14.2.2 创建不带参数的存储过程 253 14.2.3 创建带有参数的存储过程 254 14.3 调用存储过程 254 14.3.1 调用存储过程的语法格式 254 14.3.2 调用不带参数的存储过程 254 14.3.3 调用带有参数的存储过程 255 14.4 修改存储过程 255 14.4.1 修改存储过程的语法格式 255 14.4.2 使用SQL语句修改存储过程 256 14.5 查看存储过程 257 14.5.1 使用SHOW PROCEDURE STATUS语句查看 257 14.5.2 使用SHOW CREATE PROCEDURE语句查看 257 14.5.3 通过INFORMATION_SCHEMA.ROUTINES查看 258 14.6 删除存储过程 258 14.7 课后习题与练习 259 14.8 新手疑难问题解答 260 14.9 实战训练 260 第15章 MySQL用户的管理 261 15.1 认识用户权限表 261 15.1.1 user表 261 15.1.2 db表 262 15.1.3 tables_priv表 263 15.1.4 columns_priv表 264 15.1.5 procs_priv表 264 15.2 用户账户的管理 265 15.2.1 创建用户账户 265 15.2.2 删除用户账户 266 15.3 用户权限的管理 268 15.3.1 认识用户权限 268 15.3.2 授予用户权限 268 15.3.3 查看用户权限 270 15.3.4 收回用户权限 270 15.4 用户角色的管理 271 15.4.1 创建角色 271 15.4.2 给角色授权 271 15.4.3 删除角色 272 15.5 课后习题与练习 273 15.6 新手疑难问题解答 274 15.7 实战训练 274 第16章 MySQL日志的管理 275 16.1 错误日志 275 16.1.1 启动错误日志 275 16.1.2 查看错误日志 276 16.1.3 删除错误日志 276 16.2 二进制日志 276 16.2.1 启动二进制日志 277 16.2.2 查看二进制日志 278 16.2.3 删除二进制日志 279 16.3 通用查询日志 280 16.3.1 启动通用查询日志 280 16.3.2 查看通用查询日志 281 16.3.3 删除通用查询日志 281 16.4 慢查询日志 281 16.4.1 启动慢查询日志 281 16.4.2 查看慢查询日志 282 16.4.3 删除慢查询日志 282 16.5 课后习题与练习 282 16.6 新手疑难问题解答 283 16.7 实战训练 284 第17章 MySQL的性能优化 285 17.1 认识MySQL性能优化 285 17.2 查询速度的优化 286 17.2.1 分析查询语句 286 17.2.2 使用索引优化查询 289 17.2.3 使用索引查询的缺陷 289 17.2.4 优化子查询 292 17.3 数据库结构的优化 292 17.3.1 通过分解表来优化 292 17.3.2 通过中间表来优化 293 17.3.3 通过冗余字段优化 294 17.3.4 优化插入记录的速度 295 17.3.5 分析表、检查表和优化表 296 17.4 MySQL服务器的优化 298 17.4.1 服务器硬件的优化 298 17.4.2 MySQL参数的优化 298 17.5 课后习题与练习 299 17.6 新手疑难问题解答 300 17.7 实战训练 300 第18章 数据库的备份与还原 301 18.1 数据库的备份 301 18.1.1 使用MySQLdump工具备份 301 18.1.2 使用MySQLhotcopy工具快速备份 305 18.1.3 直接复制整个数据库目录 306 18.2 数据库的还原 306 18.2.1 使用MySQL命令还原 306 18.2.2 使用MySQLhotcopy工具快速还原 307 18.2.3 直接复制到数据库目录 307 18.3 数据库的迁移 308 18.3.1 相同版本之间的迁移 308 18.3.2 不同版本之间的迁移 308 18.3.3 不同数据库之间的迁移 308 18.4 数据表的导出和导入 309 18.4.1 使用MySQL命令导出 309 18.4.2 使用MySQLdump命令导出 311 18.4.3 使用SELECT…INTO OUTFILE语句导出 312 18.4.4 使用LOAD DATA INFILE语句导入 315 18.4.5 使用MySQLimport命令导入 317 18.5 课后习题与练习 318 18.6 新手疑难问题解答 319 18.7 实战训练 319