MySQL经典实例(第四版)
Sveta Smirnova, Alkin Tezuysal
马晶慧 译
出版时间:2024年05月
“无论你是正在努力登录到MySQL服务器的新手,还是正在策划构建正确的复制拓扑的专家,本书都可以为你提供支持。作者分享了数十年来在帮助数百名MySQL用户完成日常任务时积累的丰富经验。”
——Henrik Ingo
DataStax工程办公室主任

随着MySQL越来越受欢迎,关于如何通过MySQL解决具体问题的疑问越来越多,这本书也应运而生。这本手册为需要快速的解决方案或技术,但没有时间从零开始解决MySQL问题的程序员或专家提供大量简短且重点突出的代码,数百个完整的示例,以及清晰简明的解说。
第四版提供了200多个实用技巧,涵盖了MySQL 5.7以及8.0版的强大功能,旨在帮助初学者、专家,以及Web开发人员深入探索MySQL Shell、MySQL复制以及JSON等功能。
本书的主要内容包括:
● 连接到服务器、执行查询,并获取结果。
● 从MySQL服务器获取数据。
● 存储、获取以及处理字符串。
● 使用日期和时间。
● 排序查询结果,生成汇总信息。
● 评估数据集的特征。
● 编写存储函数和过程。
● 使用存储例程、触发器和计划事件。
● 执行基本的MySQL管理员任务。
● 理解MySQL的基础监视知识。
  1. 前言
  2. 第1章 客户端程序mysql
  3. 1.0 引言
  4. 1.1 设置MySQL用户账号
  5. 1.2 创建数据库和示例表
  6. 1.3 查找mysql客户端
  7. 1.4 指定mysql的命令选项
  8. 1.5 以交互的方式执行SQL语句
  9. 1.6 执行从文件或程序中读取的SQL语句
  10. 1.7 控制mysql输出的路径和格式
  11. 1.8 在SQL语句中使用用户定义的变量
  12. 1.9 自定义mysql的提示符
  13. 1.10 使用外部程序
  14. 1.11 输出的过滤与加工
  15. 第2章 MySQL Shell
  16. 2.0 引言
  17. 2.1 使用MySQL Shell连接MySQL服务器
  18. 2.2 选择协议
  19. 2.3 选择SQL、JavaScript或Python模式
  20. 2.4 SQL会话
  21. 2.5 在JavaScript模式下运行SQL
  22. 2.6 在Python模式下运行SQL
  23. 2.7 在JavaScript模式下查询表
  24. 2.8 在Python模式下使用表
  25. 2.9 在JavaScript模式下使用集合
  26. 2.10 在Python模式下使用集合
  27. 2.11 控制输出的格式
  28. 2.12 使用MySQL Shell运行报告
  29. 2.13 MySQL Shell的实用程序
  30. 2.14 使用Admin API自动化复制管理
  31. 2.15 JavaScript对象
  32. 2.16 使用Python的数据科学模块填充测试数据
  33. 2.17 重用MySQL Shell的脚本
  34. 第3章 MySQL复制
  35. 3.0 引言
  36. 3.1基本复制:一源一副本
  37. 3.2 在新安装环境中实现基于位置的复制
  38. 3.3 在已投入使用的MySQL中实现基于位置的复制
  39. 3.4 设置基于GTID的复制
  40. 3.5 配置二进制日志格式
  41. 3.6 复制过滤器
  42. 3.7 在副本上重写数据库
  43. 3.8 使用多线程副本
  44. 3.9 设置环形复制
  45. 3.10 多源复制
  46. 3.11 半同步复制插件
  47. 3.12 组复制
  48. 3.13 安全地保存复制凭据
  49. 3.14 通过TLS(SSL)复制
  50. 3.15 复制的故障排除
  51. 3.16 通过进程列表了解复制的性能
  52. 3.17 设置自动复制
  53. 第4章 编写基于MySQL的程序
  54. 4.0 引言
  55. 4.1 连接数据库与断开连接
  56. 4.2 检查错误
  57. 4.3 编写库文件
  58. 4.4 执行语句并获取结果
  59. 4.5 处理语句中的特殊字符和NULL值
  60. 4.6 处理标识符中的特殊字符
  61. 4.7 识别结果集中的NULL值
  62. 4.8 获取连接参数
  63. 4.9 重置表profile
  64. 第5章 表查询
  65. 5.0 引言
  66. 5.1 指定行与列
  67. 5.2 指定查询结果中列的别名
  68. 5.3 查询结果排序
  69. 5.4 删除重复行
  70. 5.5 NULL值
  71. 5.6 程序中的NULL值比较
  72. 5.7 通过视图简化表的查询
  73. 5.8 多表查询
  74. 5.9 截取开头、末尾或中间的查询结果
  75. 5.10 LIMIT与最终结果需要不同的排序
  76. 5.11 利用表达式计算LIMIT值
  77. 5.12 结合两个或更多SELECT的查询结果
  78. 5.13 选择子查询的结果
  79. 第6章 表管理
  80. 6.0 引言
  81. 6.1 克隆表
  82. 6.2 将查询结果保存到表中
  83. 6.3 创建临时表
  84. 6.4 生成唯一的表名
  85. 6.5 检查或更改表的存储引擎
  86. 6.6 使用mysqldump复制表
  87. 6.7 利用可传输表空间复制InnoDB表
  88. 6.8 利用sdi文件复制MyISAM表
  89. 第7章 字符串
  90. 7.0 引言
  91. 7.1 字符串属性
  92. 7.2 字符串的数据类型
  93. 7.3 设置客户端连接的字符集
  94. 7.4 字符串字面量的定义
  95. 7.5 检查或更改字符串的字符集或排序规则
  96. 7.6 转换字符串的大小写
  97. 7.7 比较字符串的值
  98. 7.8 十进制、八进制与十六进制格式之间的转换
  99. 7.9 ASCII、BIT与十六进制格式之间的转换
  100. 7.10 利用SQL模式进行模式匹配
  101. 7.11 正则表达式的模式匹配
  102. 7.12 反转字符串
  103. 7.13 搜索子字符串
  104. 7.14 分割或连结字符串
  105. 7.15 全文搜索
  106. 7.16 使用短语的全文搜索
  107. 7.17 全文搜索中必须出现或禁止出现的单词
  108. 7.18 全文词组搜索
  109. 第8章 日期与时间
  110. 8.0 引言
  111. 8.1 选择时间数据类型
  112. 8.2 小数秒的支持
  113. 8.3 更改MySQL的日期格式
  114. 8.4 设置客户端时区
  115. 8.5 设置服务器时区
  116. 8.6 切换日期时间值的时区
  117. 8.7 获取当前日期或时间
  118. 8.8 使用TIMESTAMP或DATETIME记录行的修改时间
  119. 8.9 分解日期或时间值
  120. 8.10 合成日期或时间
  121. 8.11 时间值与基本单位之间的转换
  122. 8.12 计算日期或时间之间的间隔
  123. 8.13 日期或时间值的加法运算
  124. 8.14 计算年龄
  125. 8.15 查询一个月的第一天、最后一天或总天数
  126. 8.16 查询某一天是星期几
  127. 8.17 查询一周内某一天的日期
  128. 8.18 规范化非ISO格式的日期字符串
  129. 8.19 基于时间特征的查询
  130. 第9章 查询结果排序
  131. 9.0 引言
  132. 9.1 通过ORDER BY对查询结果排序
  133. 9.2 利用表达式排序
  134. 9.3 查询结果中不包含排序列
  135. 9.4 控制字符串排序的大小写区分
  136. 9.5 日期排序
  137. 9.6 利用列值的子字符串排序
  138. 9.7 利用固定长度的子字符串排序
  139. 9.8 利用可变长度的子字符串排序
  140. 9.9 按域名顺序排列主机名
  141. 9.10 按数字顺序排列用点分割的IP值
  142. 9.11 将值移动到排序结果的开头或末尾
  143. 9.12 自定义排序
  144. 9.13 枚举值的排序
  145. 第10章 汇总数据
  146. 10.0 引言
  147. 10.1 COUNT()函数
  148. 10.2 MIN()和MAX()函数
  149. 10.3 SUM()和AVG()函数
  150. 10.4 利用DISTINCT去除重复
  151. 10.5 通过创建视图简化汇总
  152. 10.6 查找与最小值和最大值相关的值
  153. 10.7 控制MIN()和MAX()是否区分字符串大小写
  154. 10.8 按子组汇总
  155. 10.9 聚合函数处理NULL值的方式
  156. 10.10 仅选择具有特定特征的组
  157. 10.11 通过统计数量来确定值是否唯一
  158. 10.12 按表达式的计算结果分组
  159. 10.13 汇总没有分类的数据
  160. 10.14 查找最小或最大的汇总值
  161. 10.15 基于日期的汇总
  162. 10.16 同时获取分组和总体的汇总值
  163. 10.17 生成包含汇总和列表的报告
  164. 10.18 利用临时结果生成汇总
  165. 第11章 存储例程,触发器和计划事件
  166. 11.0 引言
  167. 11.1 创建复合语句对象
  168. 11.2 利用存储函数封装计算
  169. 11.3 通过存储过程返回多个值
  170. 11.4 利用触发器记录表的变更
  171. 11.5 利用事件来计划数据库操作
  172. 11.6 编写辅助例程动态执行SQL
  173. 11.7 利用条件处理程序检测是否还有下一行
  174. 11.8 利用条件处理程序捕获错误或忽略错误
  175. 11.9 报错与警告
  176. 11.10 通过访问诊断区域记录错误信息
  177. 11.11 利用触发器预处理或拒绝数据
  178. 第12章 元数据
  179. 12.0 引言
  180. 12.1 获取受语句影响的行数
  181. 12.2 获取结果集的元数据
  182. 12.3 查询数据库和表的列表或检查其存在性
  183. 12.4 列出视图或检查其存在性
  184. 12.5 访问表中列的定义
  185. 12.6 获取ENUM和SET列的信息
  186. 12.7 获取服务器的元数据
  187. 12.8 编写适合MySQL服务器版本的应用程序
  188. 12.9 通过外键约束获取引用特定表的子表
  189. 12.10 列出触发器
  190. 12.11 列出存储例程和计划事件
  191. 12.12 列出已安装的插件
  192. 12.13 列出字符集和排序规则
  193. 12.14 列出CHECK约束
  194. 第13章 导入和导出数据
  195. 13.0 引言
  196. 13.1 使用LOAD DATA和mysqlimport导入数据
  197. 13.2 指定列和行的分隔符
  198. 13.3 处理引号和特殊字符
  199. 13.4 处理重复的键值
  200. 13.5 获取有关错误输入数据的诊断信息
  201. 13.6 跳过数据文件中的某些行
  202. 13.7 指定输入列的顺序
  203. 13.8 输入值插入之前的预处理
  204. 13.9 忽略数据文件中的列
  205. 13.10 导入CSV文件
  206. 13.11 导出MySQL的查询结果
  207. 13.12 导入和导出NULL值
  208. 13.13 以SQL格式导出数据
  209. 13.14 导入SQL数据
  210. 13.15 以XML格式导出查询结果
  211. 13.16 将XML导入到MySQL
  212. 13.17 导入JSON格式的数据
  213. 13.18 从MongoDB导入数据
  214. 13.19 导出JSON格式的数据
  215. 13.20 猜测数据文件中的表结构
  216. 第14章 验证与格式化数据
  217. 14.0 引言
  218. 14.1 通过SQL模式拒绝错误的输入值
  219. 14.2 利用CHECK约束拒绝不合法的值
  220. 14.3 利用触发器拒绝输入值
  221. 14.4 编写处理输入的循环
  222. 14.5 将常见的检查放入库
  223. 14.6 使用模式匹配来验证数据
  224. 14.7 使用模式匹配广泛的内容类型
  225. 14.8 使用模式匹配数字值
  226. 14.9 使用模式匹配日期或时间
  227. 14.10 使用模式检查电子邮件地址或URL
  228. 14.11 使用表的元数据验证数据
  229. 14.12 使用查找表验证数据
  230. 14.13 将两位数的年份值转换成四位数的形式
  231. 14.14 检查日期或时间部分的有效性
  232. 14.15 编写日期处理工具程序
  233. 14.16 导入非ISO格式的日期值
  234. 14.17 使用非ISO格式导出日期
  235. 14.18 预处理并导入文件
  236. 第15章 序列
  237. 15.0 引言
  238. 15.1 使用自增列生成序列值
  239. 15.2 为自增列选择数据类型
  240. 15.3 删除行对序列造成的影响
  241. 15.4 获取序列值
  242. 15.5 重新编号现有的序列
  243. 15.6 扩展序列的范围
  244. 15.7 重用序列的最大值
  245. 15.8 按特定的顺序给行重新编号
  246. 15.9 向表中添加序列
  247. 15.10 同时管理多个自动递增的值
  248. 15.11 使用自动递增值关联表
  249. 15.12 将序列作为计数器
  250. 15.13 生成重复序列
  251. 15.14 使用自定义的递增幅度
  252. 15.15 使用窗口函数为结果集中的行编号
  253. 15.16 使用通用表表达式生成序列
  254. 15.17 创建和存储自定义序列
  255. 第16章 连接与子查询
  256. 16.0 引言
  257. 16.1 表之间的结合
  258. 16.2 查找表之间不匹配的行
  259. 16.3 识别并删除不匹配或独立存在的行
  260. 16.4 表的自我比较
  261. 16.5 生成主从列表以及汇总
  262. 16.6 列举多对多的关系
  263. 16.7 查找每组的最小值或最大值
  264. 16.8 利用连接填充或查找列表的缺口
  265. 16.9 利用Join控制查询的排序
  266. 16.10 连接多个查询的结果
  267. 16.11 在程序中引用连接输出的列名
  268. 第17章 统计技巧
  269. 17.0 引言
  270. 17.1 计算描述性统计
  271. 17.2 为分组生成描述性统计
  272. 17.3 生成频率分布
  273. 17.4 统计缺失值
  274. 17.5 计算线性回归或相关系数
  275. 17.6 生成随机数
  276. 17.7 随机排序
  277. 17.8 随机选择数据
  278. 17.9 计算相邻两行之差
  279. 17.10 计算累积总和与移动平均值
  280. 17.11 指定排名
  281. 17.12 计算团队排名
  282. 第18章 处理重复数据
  283. 18.0 引言
  284. 18.1 防止表中出现重复数据
  285. 18.2 表中有多个唯一键
  286. 18.3 处理重复的加载数据
  287. 18.4 识别与统计重复数据
  288. 18.5 移除表中的重复数据
  289. 第19章 JSON数据
  290. 19.0 引言
  291. 19.1 选择正确的数据类型
  292. 19.2 插入JSON值
  293. 19.3 验证JSON
  294. 19.4 格式化JSON值
  295. 19.5 提取JSON值
  296. 19.6 搜索JSON
  297. 19.7 插入新元素到JSON文档
  298. 19.8 更新JSON
  299. 19.9 删除JSON元素
  300. 19.10 将两个或多个JSON文档合并成一个
  301. 19.11 根据关系数据创建JSON
  302. 19.12 将JSON转换成关系格式
  303. 19.13 浏览JSON
  304. 19.14 利用JSON存储文档
  305. 第20章 事务处理
  306. 20.0 引言
  307. 20.1 选择事务存储引擎
  308. 20.2 使用SQL执行事务
  309. 20.3 在程序内执行事务
  310. 20.4 Perl程序中的事务
  311. 20.5 Ruby程序中的事务
  312. 20.6 PHP程序中的事务
  313. 20.7 Python程序中的事务
  314. 20.8 Go程序中的事务
  315. 20.9 在Go中使用上下文感知函数来处理事务
  316. 20.10 Java程序中的事务
  317. 第21章 查询性能
  318. 21.0 引言
  319. 21.1 创建索引
  320. 21.2 创建代理主键
  321. 21.3 维护索引
  322. 21.4 查询何时使用索引
  323. 21.5 多列索引的使用顺序
  324. 21.6 升序索引与降序索引
  325. 21.7 基于函数的索引
  326. 21.8 JSON数据生成列上的索引
  327. 21.9 使用全文索引
  328. 21.10 空间索引和地理数据
  329. 21.11 直方图的创建及使用
  330. 21.12 编写高性能查询
  331. 第22章 服务器管理
  332. 22.0 引言
  333. 22.1 配置服务器
  334. 22.2 管理插件接口
  335. 22.3 控制服务器的日志记录
  336. 22.4 日志文件的轮换与淘汰
  337. 22.5 轮换日志表或淘汰表中的记录
  338. 22.6 配置存储引擎
  339. 第23章 监控MySQL服务器
  340. 23.0 引言
  341. 23.1 为什么要监视MySQL服务器?
  342. 23.2 MySQL监控信息的资源
  343. 23.3 检查服务器的正常运行时间
  344. 23.4 服务器启动问题的故障排除
  345. 23.5 MySQL服务器的IO利用率
  346. 23.6 MySQL线程的CPU利用率
  347. 23.7 确认MySQL是否达到了连接上限
  348. 23.8 验证缓冲池的大小是否合理
  349. 23.9 查询有关存储引擎的信息
  350. 23.10 利用错误日志对MySQL服务器崩溃进行故障排除
  351. 23.11 慢查询日志文件
  352. 23.12 使用常规查询日志监控
  353. 23.13 使用二进制日志查找变更
  354. 第24章 安全
  355. 24.0 引言
  356. 24.1 表mysql.user
  357. 24.2 管理用户账号
  358. 24.3 密码策略
  359. 24.4 检查密码强度
  360. 24.5 密码过期
  361. 24.6 设置新密码
  362. 24.7 重置过期密码
  363. 24.8 查找并删除匿名账号
  364. 24.9 修改“任何主机”和“多个主机”的账号
  365. 24.10 使用TSL(SSL)
  366. 24.11 角色
  367. 24.12 利用视图保护数据访问
  368. 24.13 使用存储例程保护数据修改
书名:MySQL经典实例(第四版)
译者:马晶慧 译
国内出版社:中国电力出版社
出版时间:2024年05月
书号:978-7-5198-8773-5
原版书书名:MySQL Cookbook , 4e
原版书出版商:O'Reilly Media
Sveta Smirnova
 
Sveta Smirnova是Percona的首席支持升级专家。她的主要职业兴趣包括解决问题、处理棘手的问题,以及教导其他人如何有效地处理MySQL的问题、错误和陷阱。著作包括《MySQL Troubleshooting》等。她在许多活动中发表过演讲,包括Fosdem(自由及开源软件开发者欧洲会议)、Percona Live和Oracle Open World。
 
 
Alkin Tezuysal
 
Alkin Tezuysal是ChistaDATA, Inc.的全球服务执行副总裁。他拥有开源关系数据库方面的丰富经验,曾任职于多个区域以及大型职能部门。他拥有超过25年的行业经验,曾领导MySQL客户与用户的全球运营团队。此外,他还是全球开源数据库活动的知名演讲者。
 
 
本书封面上的动物是绿安乐蜥。这些常见的蜥蜴经常出现在美国东南部、加勒比海和南美洲。绿安乐蜥居住在潮湿阴暗的环境中,如树木和灌木丛中。它们以蟋蟀、蟑螂、飞蛾、蛆和蜘蛛等小昆虫为生。
绿安乐蜥体形娇小,头部狭窄,细长的尾巴大约是身体的两倍长。脚上特殊的脚垫可以帮助它们攀爬,并紧贴并在物体表面上奔跑。它们的大小约为6到8英寸。虽然顾名思义绿安乐蜥通常是亮绿色,但它们的颜色可以随着周围的环境而改变,可以变化成灰棕色、棕色和绿色。雄性变色龙有粉红色的颈下垂皮,可以在它们求爱或保护自己的领土时伸展。
O’Reilly出版的图书,封面上很多动物都濒临灭绝。这些动物都是地球的至宝。如果你想知道如何保护这些动物,请访问animals.oreilly.com。
购买选项
定价:198.00元
书号:978-7-5198-8773-5
出版社:中国电力出版社