MySQL不完全干货教程(持续更新中)

已经有很多教程面面俱到、事无巨细,但实际上能用到的、消化的内容很少。
希望本文能帮助MySQL初中级使用者,解决问题的同时,提供更好的学习与实践方法,从原理角度理解为何要这么用、为何MySQL要这样设计。

本文聚焦于常见的使用场景,给出MySQL用法和基本原理说明。

  • 为便于实践和消化,同时提供了很多案例和脚本。
  • 为了读者进一步深入学习、掌握自我升级的方法,提供了一些权威文档的参考。

注意:本文属于系列文章的集合,侧重说明其他文章的重点、解决的问题,帮助读者快速定位自己需要的文章进行细读。

导航

    • 如何学习MySQL
    • 基本使用与基础原理
      • DDL及数据类型
        • 数据类型
        • 自增、自动更新等类型修饰
      • DML与基础函数/命令
      • 数据分析
      • 客户端与服务器
    • 性能分析与优化
      • 监控与分析
      • 分片/分库分表等分布式策略
    • 常见问题及解决方案

如何学习MySQL

善用权威文档和资料,并动手实践验证。因此本文中提到的内容,基本上都有对应的脚本和例子,供大家

  • 《MySQL学习方法:官方文档的使用》:快速、准确掌握MySQL原理的途径

基本使用与基础原理

主要介绍MySQL常见的基本使用,但包含了对应的原理分析,因此不同于一般的使用文档。

DDL及数据类型

除了使用,还解答了下面的一些问题

  • 常用的有哪些类型,有什么区别?
  • 类型后的长度有几种含义?
  • 存储开销和长度一定有关吗?
  • 自增什么情况下会重复?

数据类型

涉及字段长度、取值范围、存储开销等。
包括了5.6/5.7/8.x的主要类型,区分了显示宽度/有无符号/定点浮点、不同时间类型

强烈建议您阅读《MySQL数据类型详解》,除了各类型用法,还介绍了类型对比、存储原理等内容。

下面是部分分解专题:

  • 《MySQL中VARCHAR最大长度是多少?CHAR和VARCHAR有哪些区别?》
  • 《MySQL显示宽度与字段长度》
  • 《时区是怎么划分的?世界各时区的时间如何统一表达?GMT、UTC、UNIX有什么区别?》

自增、自动更新等类型修饰

  • 《MySQL自增列AUTO_INCREMENT详解》:介绍自增列用法,含NULL值、初始值、指定值等详细说明
    • 《MySQL自增列使用replace into的风险》
  • 《MySQL自动更新列时间戳 ON UPDATE CURRENT_TIMESTAMP》:ON UPDATE的生效时机、适用类型、精度与默认值等。

DML与基础函数/命令

  • 时间处理函数复杂,应该选用哪个? 它们之间有哪些差异和共性?
  • NULL作为特殊值,尝尝有出人意料的表现,有什么规律?
  • 《MySQL日期与时间函数》:涉及日期/时间格式化、增减、对比、时区、UTC和UNIX时间
    • 《MySQL获取当前时间、UNIX时间戳、当前版本的函数》
  • 《MySQL计算字段长度/大小》:涉及length、bit_length、char_length函数对比
  • 《MySQL分页查询》:limit用法详解、适用的性能优化场景
  • 《NULL如何参与运算和统计》:涉及到计数求和聚合count/max/sum/group等函数下NULL的表现

数据分析

复杂的数据分析,有函数该如何用,没函数该如何自己模拟?

  • 《MySQL统计数据的时间分布》
    核心为通过SUBSTRING、DATA_FORMAT、EXTRACT等函数对时间字段进行处理。
  • 《MySQL实现排名/分组排名/合计》:介绍了8.0窗口函数rank/dense_rank,也提供了5.6/5.7自行模拟的思路
  • 《一对多连表时实现多行过滤》

客户端与服务器

如何顺畅使用MySQL客户端、维护MySQL服务器?

  • 《Linux安装MySQL服务器》:介绍Yum超快安装
  • 《Linux启动MySQL服务进程的几种方式》
  • 《Python操作MySQL教程》

性能分析与优化

  • 性能问题该如何排查、分析、处理?
  • 有哪些常见的优化策略和手段?

监控与分析

  • 《MySQL性能分析之show processlist及information_schema.processlist详解》
    • 《MySQL基于information_schema的性能分析样例》:涉及连接数、数据量、事务和锁等的监控,慢连接处理
    • 《MySQL processlist的state属性详解》:常用于慢连接的障碍定位。
  • 《MySQL使用Kill命令》:主要用于杀死/清理慢连接
  • 《数据库常见优化策略》

分片/分库分表等分布式策略

  • 《MySQL分区partition》:介绍了分区的使用,以及为什么要做数据库拆分、为什么partition可以提升性能
  • 《分库分表:水平拆分与垂直拆分》

常见问题及解决方案

经典和常见问题索引,提供解决方案。

  • 《MySQL常见误区》
  • 《InnoDB数据损坏如何恢复》:常见于机房断电后,MySQL启动失败的情况
  • MySQL ERROR 16 (42000):FUNCTION sum does not exist. Check the ‘Function Name Parsing and Resolution’
  • Data truncation: Out of range value for column
  • 《MySQL变量使用的常见问题》

以上。感谢你的关注。

待更新:

  • 索引结构与设计,执行计划优化
  • 事务、锁
  • 磁盘存储结构、行模式
  • 聚合与排序原理、函数使用

你可能感兴趣的:(MySQL,━,基本原理和函数,推荐,mysql,教程,干货,快速入门,原理)