<div markdown="1">
  <sup>使用<a href="https://wangchujiang.com/#/app" target="_blank">我的应用</a>，也是对我的<a href="https://wangchujiang.com/#/sponsor" target="_blank">支持</a>：</sup>
  <br>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6758053530" title="Scap: Screenshot & Markup Edit for macOS"><img alt="Scap: Screenshot & Markup Edit" height="52" src="https://wangchujiang.com/appicon/scap.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6757317079" title="Screen Test for macOS"><img alt="Screen Test" height="52" src="https://wangchujiang.com/appicon/screen-test.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6755948110" title="Deskmark for macOS"><img alt="Deskmark" height="52" src="https://wangchujiang.com/appicon/deskmark.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6500434773" title="Keyzer for macOS"><img alt="Keyzer" height="52" src="https://wangchujiang.com/appicon/keyzer.png"></a>
  <a target="_blank" href="https://github.com/jaywcjlove/vidwall-hub" title="Vidwall Hub for macOS"><img alt="Vidwall Hub" height="52" src="https://wangchujiang.com/appicon/vidwall-hub.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6752624705" title="VidCrop for macOS"><img alt="VidCrop" height="52" src="https://wangchujiang.com/appicon/vidcrop.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6747587746" title="Vidwall for macOS"><img alt="Vidwall" height="52" src="https://wangchujiang.com/appicon/vidwall.png"></a>
  <a target="_blank" href="https://wangchujiang.com/mousio-hint/" title="Mousio Hint for macOS"><img alt="Mousio Hint" height="52" src="https://wangchujiang.com/appicon/mousio-hint.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6746747327" title="Mousio for macOS"><img alt="Mousio" height="52" src="https://wangchujiang.com/appicon/mousio.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6745227444" title="Musicer for macOS"><img alt="Musicer" height="52" src="https://wangchujiang.com/appicon/musicer.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6743841447" title="Audioer for macOS"><img alt="Audioer" height="52" src="https://wangchujiang.com/appicon/audioer.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6744690194" title="FileSentinel for macOS"><img alt="FileSentinel" height="52" src="https://wangchujiang.com/appicon/file-sentinel.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6743495172" title="FocusCursor for macOS"><img alt="FocusCursor" height="52" src="https://wangchujiang.com/appicon/focus-cursor.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6742680573" title="Videoer for macOS"><img alt="Videoer" height="52" src="https://wangchujiang.com/appicon/videoer.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6740425504" title="KeyClicker for macOS"><img alt="KeyClicker" height="52" src="https://wangchujiang.com/appicon/key-clicker.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6739052447" title="DayBar for macOS"><img alt="DayBar" height="52" src="https://wangchujiang.com/appicon/daybar.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6739444407" title="Iconed for macOS"><img alt="Iconed" height="52" src="https://wangchujiang.com/appicon/iconed.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6737160756" title="Menuist for macOS"><img alt="Menuist" height="52" src="https://wangchujiang.com/appicon/rightmenu-master.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6723903021" title="Paste Quick for macOS"><img alt="Quick RSS" height="52" src="https://wangchujiang.com/appicon/paste-quick.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6670696072&platform=mac" title="Quick RSS for macOS/iOS"><img alt="Quick RSS" height="52" src="https://wangchujiang.com/appicon/quick-rss.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6670167443" title="Web Serve for macOS"><img alt="Web Serve" height="52" src="https://wangchujiang.com/appicon/web-serve.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6503953628&platform=mac" title="Copybook Generator for macOS/iOS"><img alt="Copybook Generator" height="52" src="https://wangchujiang.com/appicon/copybook-generator.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6471227008&platform=mac" title="DevTutor for macOS/iOS"><img alt="DevTutor for SwiftUI" height="52" src="https://wangchujiang.com/appicon/devtutor.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6479819388&platform=mac" title="RegexMate for macOS/iOS"><img alt="RegexMate" height="52" src="https://wangchujiang.com/appicon/regex-mate.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6479194014&platform=mac" title="Time Passage for macOS/iOS"><img alt="Time Passage" height="52" src="https://wangchujiang.com/appicon/time-passage.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6478772538" title="IconizeFolder for macOS"><img alt="Iconize Folder" height="52" src="https://wangchujiang.com/appicon/iconize-folder.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6478511402&platform=mac" title="Textsound Saver for macOS/iOS"><img alt="Textsound Saver" height="52" src="https://wangchujiang.com/appicon/textsound-saver.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6476924627" title="Create Custom Symbols for macOS"><img alt="Create Custom Symbols" height="52" src="https://wangchujiang.com/appicon/create-custom-symbols.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6476452351" title="DevHub for macOS"><img alt="DevHub" height="52" src="https://wangchujiang.com/appicon/devhub.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6476400184" title="Resume Revise for macOS"><img alt="Resume Revise" height="52" src="https://wangchujiang.com/appicon/resume-revise.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6472593276" title="Palette Genius for macOS"><img alt="Palette Genius" height="52" src="https://wangchujiang.com/appicon/palette-genius.png"></a>
  <a target="_blank" href="https://jaywcjlove.github.io/maslink/?id=6470879005" title="Symbol Scribe for macOS"><img alt="Symbol Scribe" height="52" src="https://wangchujiang.com/appicon/symbol-scribe.png"></a>
</div>
<hr>

<img align="right" height="150" src="./img/mysql-logo.png">

<!--idoc:ignore:start-->
MySQL入门教程
===
<!--idoc:ignore:end-->

[![Buy me a coffee](https://img.shields.io/badge/Buy_Me_a_Coffee-ffdd00?logo=buy-me-a-coffee&logoColor=black)](https://jaywcjlove.github.io/#/sponsor)
[![Follow On X](https://img.shields.io/badge/Follow%20on%20X-333333?logo=x&logoColor=white)](https://x.com/jaywcjlove)
[![](https://jaywcjlove.github.io/sb/ico/mysql.svg)](http://www.mysql.com/)
[![](https://jaywcjlove.github.io/sb/ico/awesome.svg)](./docs/awesome-mysql.md)
![](https://jaywcjlove.github.io/sb/license/mit.svg)

从零开始学习MySQL，主要是面向MySQL数据库管理系统初学者。前端开发工程师为什么写这个入门教程呢？最近项目强迫我这个前端老司机使用MySQL，虽然我在项目中已经使用过一段时间，为了写出高质量的SQL语句，能快速定位解决数据库引发的问题，系统的过一遍基础，你也可以当做是我的笔记。有幸也认识一些 MySQL 的 DBA，这让我学习起来比较快，能快速入门，进入实战开发阶段。

原本我是使用 MongoDB 这类型的 NoSQL 数据库，MongoDB在 Nodejs 在 Mongoose 包的帮助下 JSON 的数据格式直接插入 MongoDB 中，对于一个前端开发工程师，使用起来非常舒服。但是没有办法，我是被逼的，从此入了一个新坑，我就决心系统的好好学习一下。如果你对本小电子书阅读非常没有耐心，你可以看看我做的一篇笔记 **《[21分钟MySQL基础入门](./docs/21-minutes-MySQL-basic-entry.md)》** ，这个笔记还可以在 [SegmentFault](https://segmentfault.com/a/1190000006876419) 里面阅读，有导航阅读非常方便，为什么只需要21分钟呢？因为在我们大天朝有句话叫做“不管三七二十一”，你可以不管三七二十一开始使用 MySQL 及快速入门，里面系统的整理了，一些常用的SQL语句。

在本书中所搜集到得各种资源，我把它将放到这里 **[Awesome MySQL](./docs/awesome-mysql.md)**。所有SQL语句例子，是基于 MySQL 5.7.14 或者 MySQL 5.7.16 运行的。这里面的一些理论知识都是从[维基百科](https://zh.wikipedia.org)等各种百科、各种官网搬运过来的，偶尔会有一些基础理论知识总结，如果有错误或者误差，可以给我来个疯狂的[Pull requesets](https://github.com/jaywcjlove/mysql-tutorial/pulls)或[Issue](https://github.com/jaywcjlove/mysql-tutorial/issues)。如果实在看不下去你可以🔫。

MariaDB，是 MySQL server 的一个由社区开发的分支，MariaDB大部分跟 MySQL 5.5 以前版本使用差不多。自己电脑上是 MySQL 5.7.14，公司服务器上面是 MariaDB 最新版本，生产上 MySQL 5.7.16，所以很尴尬，偶尔提及MariaDB也是很正常的吧。

> [!TIP]
> 没有完成的部分我已经借助 GPT-5.4 进行了补充完善，也欢迎大家结合 AI 工具进一步优化，让这份教程更加易懂、更加适合入门学习。(2026/03)

## 目录

#### Awesome MySQL

- [21分钟MySQL基础入门](./docs/21-minutes-MySQL-basic-entry.md)
- [手册文档](./docs/awesome-mysql.md#手册文档) - 一些非官方的手册文档搜集
- [分析工具](./docs/awesome-mysql.md#分析工具) - 性能，结构和数据分析工具
- [GUI](./docs/awesome-mysql.md#gui) - 搜集的一些 MySQL 的客户端，也有命令行客户端
- [服务器](./docs/awesome-mysql.md#服务器) - MySQL服务器的衍生品
- [备份](./docs/awesome-mysql.md#备份) - 备份/存储/恢复 工具
- [官方资料](./docs/awesome-mysql.md#官方资料) - 官方的一些网站和文章
- [优秀文章](./docs/awesome-mysql.md#优秀文章) - 一些优秀的文章

#### 第1章 初识MySQL

- 1.1 [数据库基础](./docs/chapter1/1.1.md)
    - [什么是数据库](./docs/chapter1/1.1.md#什么是数据库)
    - [数据库分类](./docs/chapter1/1.1.md#数据库分类)
    - [数据库模型](./docs/chapter1/1.1.md#数据库模型)
    - [数据表](./docs/chapter1/1.1.md#数据表)
    - [关系键](./docs/chapter1/1.1.md#关系键)
- 1.2 [数据库技术构成](./docs/chapter1/1.2.md)
    - [数据库系统](./docs/chapter1/1.2.md#数据库系统)
    - [关系数据库基本概念](./docs/chapter1/1.2.md#关系数据库基本概念)
    - [SQL语言](./docs/chapter1/1.2.md#sql语言)
    - [数据库访问技术](./docs/chapter1/1.2.md#数据库访问技术)
- 1.3 [什么是MySQL](./docs/chapter1/1.3.md)
    - [MySQL介绍](./docs/chapter1/1.3.md#mysql-介绍)
    - [MySQL发展历史](./docs/chapter1/1.3.md#mysql-发展历史)
    - [MySQL版本](./docs/chapter1/1.3.md#mysql-版本)
    - [MySQL的优势](./docs/chapter1/1.3.md#mysql-的优势)
- 1.4 [如何学习MySQL](./docs/chapter1/1.4.md)

#### 第2章 MySQL的安装与配置

- 2.1 [Mac平台下安装与配置MySQL](./docs/chapter2/2.1.md)
    - [Mac上安装MySQL](./docs/chapter2/2.1.md#mac-安装mysql)
    - [Mac上卸载MySQL](./docs/chapter2/2.1.md#mac-卸载mysql)
- 2.2 [Centos 平台安装与卸载MySQL](./docs/chapter2/2.2.md)
    - [检查是否已安装](./docs/chapter2/2.2.md#检查是否已安装)
    - [更新安装源](./docs/chapter2/2.2.md#更新安装源)
    - [检查是否下载成功](./docs/chapter2/2.2.md#检查是否下载成功)
    - [查看版本](./docs/chapter2/2.2.md#查看版本)
    - [启动指定版本](./docs/chapter2/2.2.md#启动指定版本)
    - [安装MySQL](./docs/chapter2/2.2.md#安装mysql)
    - [查看安装目录](./docs/chapter2/2.2.md#查看安装目录)
    - [MariaDB切换MySQL](./docs/chapter2/2.2.md#mariadb切换mysql)
    - [卸载 MySQL 软件](./docs/chapter2/2.2.md#卸载-mysql-软件)
- 2.3 [Docker 安装 MySQL](./docs/chapter2/2.3.md)
    - [快速启动一个 MySQL 服务器实例](./docs/chapter2/2.3.md#快速启动一个-mysql-服务器实例)
    - [通过命令行访问 MySQL 容器](#通过命令行访问-mysql-容器)
    - [使用 MySQL 自定义配置文件](#使用-mysql-自定义配置文件)
    - [使用 stack 部署 MySQL](#使用-stack-部署-mysql)
- 2.4 [启动数据库设置初始密码](./docs/chapter2/2.4.md)
    - [命令行启动关闭重启MySQL服务](./docs/chapter2/2.4.md#命令行启动关闭重启mysql服务)
    - [图像界面启动关闭重启MySQL服务](./docs/chapter2/2.4.md#图像界面启动关闭重启mysql服务)
    - [查看初始密码](./docs/chapter2/2.4.md#查看初始密码)
    - [设置初始化密码](./docs/chapter2/2.4.md#设置初始化密码)
    - [启动报错处理](./docs/chapter2/2.4.md#启动报错处理)
- 2.5 [MySQL工具](./docs/chapter2/2.5.md)
    - [命令行使用程序](./docs/chapter2/2.5.md#命令行使用程序)
    - [MySQL Workbench客户端](./docs/chapter2/2.5.md#mysql-workbench客户端)
    - [常用图形管理工具](./docs/chapter2/2.5.md#常用图形管理工具)
    - [MyCli替代MySQL的mysql命令行工具](./docs/chapter2/2.5.md#mycli替代mysql的mysql命令行工具)
- 2.6 [MySQL配置修改](./docs/chapter2/2.6.md)
    - [MySQL安装目录说明](./docs/chapter2/2.6.md#mysql安装目录说明)
    - [配置文件的位置](./docs/chapter2/2.6.md#配置文件的位置)
    - [Windows系统配置文件读取](./docs/chapter2/2.6.md#windows系统配置文件读取)
    - [Linux系统配置文件读取](./docs/chapter2/2.6.md#linux系统配置文件读取)
    - [配置文件内容](./docs/chapter2/2.6.md#配置文件内容)

#### 第3章 数据库的基本操作

- 3.1 [连接数据库](./docs/chapter3/3.1.md)
    - [MySQL命令语法](./docs/chapter3/3.1.md#mysql命令语法)
    - [MySQL命令连接数据库](./docs/chapter3/3.1.md#mysql命令连接数据库)
    - [开启MySQL的远程帐号](./docs/chapter3/3.1.md#开启mysql的远程帐号)
    - [MySQL修改密码](./docs/chapter3/3.1.md#mysql修改密码)
- 3.2 [查看选择数据库](./docs/chapter3/3.2.md)
    - [查看数据库](./docs/chapter3/3.2.md#查看数据库)
    - [选择数据库](./docs/chapter3/3.2.md#选择数据库)
- 3.3 [创建数据库](./docs/chapter3/3.3.md)
    - [SQL语句创建数据库](./docs/chapter3/3.3.md#sql语句创建数据库)
    - [管理工具创建数据库](./docs/chapter3/3.3.md#管理工具创建数据库)
- 3.4 [删除数据库](./docs/chapter3/3.4.md)
    - [SQL语句删除数据库](./docs/chapter3/3.4.md#sql语句删除数据库)
    - [管理工具删除数据库](./docs/chapter3/3.4.md#管理工具删除数据库)
- 3.5 [数据库存储引擎](./docs/chapter3/3.5.md#)
    - [存储引擎简介](./docs/chapter3/3.5.md#存储引擎简介)
    - [常用引擎对比](./docs/chapter3/3.5.md#常用引擎对比)
    - [查看存储引擎](./docs/chapter3/3.5.md#查看存储引擎)
    - [设置存储引擎](./docs/chapter3/3.5.md#设置存储引擎)
    - [如何选择合适的存储引擎](./docs/chapter3/3.5.md#如何选择合适的存储引擎)

#### 第4章 数据表的基本操作

- 4.1 [创建数据表](./docs/chapter4/4.1.md)
    - [数据表的结构设计](./docs/chapter4/4.1.md#数据表的结构设计)
    - [CREATE TABLE语句](./docs/chapter4/4.1.md#create-table语句)
    - [设置主键约束](./docs/chapter4/4.1.md#设置主键约束)
    - [设置外键约束](./docs/chapter4/4.1.md#设置外键约束)
- 4.2 [查看数据表结构](./docs/chapter4/4.2.md)
    - [DESCRIBE语句](./docs/chapter4/4.2.md#describe语句)
    - [SHOW CREATE TABLE语句](./docs/chapter4/4.2.md#show-create-table语句)
- 4.3 [修改数据表](./docs/chapter4/4.3.md)
    - [修改表名](./docs/chapter4/4.3.md#修改表名)
    - [修改字段数据类型](./docs/chapter4/4.3.md#修改字段数据类型)
    - [添加字段](./docs/chapter4/4.3.md#添加字段)
    - [删除字段](./docs/chapter4/4.3.md#删除字段)
    - [修改字段名](./docs/chapter4/4.3.md#修改字段名)
- 4.4 [删除数据表](./docs/chapter4/4.4.md)
    - [删除没有被关联的表](./docs/chapter4/4.4.md#删除没有被关联的表)
    - [删除被其他表关联的主表](./docs/chapter4/4.4.md#删除被其他表关联的主表)

#### 第5章 数据类型和运算符

- 5.1 [MySQL 数据类型介绍](./docs/chapter5/5.1.md)
    - [数据类型的分类](./docs/chapter5/5.1.md#数据类型的分类)
    - [如何选择数据类型](./docs/chapter5/5.1.md#如何选择数据类型)
    - [MySQL 8.x 重要新特性](./docs/chapter5/5.1.md#mysql-8x-重要新特性)
- 5.2 [整数类型](./docs/chapter5/5.2.md)
    - [TINYINT类型](./docs/chapter5/5.2.md#tinyint类型)
    - [SMALLINT类型](./docs/chapter5/5.2.md#smallint类型)
    - [MEDIUMINT类型](./docs/chapter5/5.2.md#mediumint类型)
    - [INT类型](./docs/chapter5/5.2.md#int类型)
    - [BIGINT类型](./docs/chapter5/5.2.md#bigint类型)
- 5.3 [浮点数类型和定点数类型](./docs/chapter5/5.3.md)
    - [FLOAT类型](./docs/chapter5/5.3.md#float类型)
    - [DOUBLE类型](./docs/chapter5/5.3.md#double类型)
    - [DECIMAL类型](./docs/chapter5/5.3.md#decimal类型)
- 5.4 [日期时间类型](./docs/chapter5/5.4.md)
    - [YEAR类型](./docs/chapter5/5.4.md#year类型)
    - [DATE类型](./docs/chapter5/5.4.md#date类型)
    - [TIME类型](./docs/chapter5/5.4.md#time类型)
    - [DATETIME类型](./docs/chapter5/5.4.md#datetime类型)
    - [TIMESTAMP类型](./docs/chapter5/5.4.md#timestamp类型)
- 5.5 [字符串类型](./docs/chapter5/5.5.md)
    - [CHAR和VARCHAR类型](./docs/chapter5/5.5.md#char和varchar类型)
    - [TEXT类型](./docs/chapter5/5.5.md#text类型)
    - [ENUM类型](./docs/chapter5/5.5.md#enum类型)
    - [SET类型](./docs/chapter5/5.5.md#set类型)
- 5.6 [二进制类型](./docs/chapter5/5.6.md)
    - [BIT类型](./docs/chapter5/5.6.md#bit类型)
    - [BINARY和VARBINARY类型](./docs/chapter5/5.6.md#binary和varbinary类型)
    - [BLOB类型](./docs/chapter5/5.6.md#blob类型)
- 5.7 [运算符](./docs/chapter5/5.7.md)
    - [算术运算符](./docs/chapter5/5.7.md#算术运算符)
    - [比较运算符](./docs/chapter5/5.7.md#比较运算符)
    - [逻辑运算符](./docs/chapter5/5.7.md#逻辑运算符)
    - [位运算符](./docs/chapter5/5.7.md#位运算符)

#### 第6章 MySQL函数

- 6.1 [MySQL函数简介](./docs/chapter6/6.1.md)
    - [函数的分类](./docs/chapter6/6.1.md#函数的分类)
    - [如何使用函数](./docs/chapter6/6.1.md#如何使用函数)
- 6.2 [数学函数](./docs/chapter6/6.2.md)
    - [绝对值函数和返回圆周率的函数](./docs/chapter6/6.2.md#绝对值函数和返回圆周率的函数)
    - [平方根函数和求余函数](./docs/chapter6/6.2.md#平方根函数和求余函数)
    - [获取整数的函数](./docs/chapter6/6.2.md#获取整数的函数)
    - [获取随机数的函数](./docs/chapter6/6.2.md#获取随机数的函数)
    - [三角函数](./docs/chapter6/6.2.md#三角函数)
- 6.3 [字符串函数](./docs/chapter6/6.3.md)
    - [计算字符串字符数和字符串长度的函数](./docs/chapter6/6.3.md#计算字符串字符数和字符串长度的函数)
    - [合并字符串函数](./docs/chapter6/6.3.md#合并字符串函数)
    - [替换字符串的函数](./docs/chapter6/6.3.md#替换字符串的函数)
    - [比较字符串大小的函数](./docs/chapter6/6.3.md#比较字符串大小的函数)
    - [查找字符串的函数](./docs/chapter6/6.3.md#查找字符串的函数)
- 6.4 [日期时间函数](./docs/chapter6/6.4.md)
    - [获取当前日期时间的函数](./docs/chapter6/6.4.md#获取当前日期时间的函数)
    - [获取月份的函数](./docs/chapter6/6.4.md#获取月份的函数)
    - [获取星期的函数](./docs/chapter6/6.4.md#获取星期的函数)
    - [获取时间的函数](./docs/chapter6/6.4.md#获取时间的函数)
    - [格式化日期的函数](./docs/chapter6/6.4.md#格式化日期的函数)
- 6.5 [条件判断函数](./docs/chapter6/6.5.md)
    - [IF语句和CASE语句](./docs/chapter6/6.5.md#if语句和case语句)
    - [IFNULL和NULLIF函数](./docs/chapter6/6.5.md#ifnull和nullif函数)
- 6.6 [系统信息函数](./docs/chapter6/6.6.md)
    - [获取MySQL版本号、连接数和数据库名的函数](./docs/chapter6/6.6.md#获取mysql版本号连接数和数据库名的函数)
    - [获取用户名的函数](./docs/chapter6/6.6.md#获取用户名的函数)
    - [获取字符串的字符集和排序方式的函数](./docs/chapter6/6.6.md#获取字符串的字符集和排序方式的函数)
- 6.7 [加密函数](./docs/chapter6/6.7.md)
    - [加密函数PASSWORD](./docs/chapter6/6.7.md#加密函数password)
    - [加密函数MD5](./docs/chapter6/6.7.md#加密函数md5)
    - [加密函数ENCODE和DECODE](./docs/chapter6/6.7.md#加密函数encode和decode)

#### 第7章 查询数据

- 7.1 [基本查询语句](./docs/chapter7/7.1.md)
    - [SELECT语句的语法](./docs/chapter7/7.1.md#select语句的语法)
    - [查询所有字段](./docs/chapter7/7.1.md#查询所有字段)
    - [查询指定字段](./docs/chapter7/7.1.md#查询指定字段)
    - [查询指定记录](./docs/chapter7/7.1.md#查询指定记录)
    - [带IN关键字的查询](./docs/chapter7/7.1.md#带in关键字的查询)
    - [带BETWEEN AND的范围查询](./docs/chapter7/7.1.md#带between-and的范围查询)
    - [带LIKE的字符匹配查询](./docs/chapter7/7.1.md#带like的字符匹配查询)
- 7.2 [排序查询](./docs/chapter7/7.2.md)
    - [单字段排序](./docs/chapter7/7.2.md#单字段排序)
    - [多字段排序](./docs/chapter7/7.2.md#多字段排序)
- 7.3 [限制查询结果的数量](./docs/chapter7/7.3.md)
    - [指定初始位置](./docs/chapter7/7.3.md#指定初始位置)
    - [不指定初始位置](./docs/chapter7/7.3.md#不指定初始位置)
- 7.4 [统计函数和分组查询](./docs/chapter7/7.4.md)
    - [COUNT函数](./docs/chapter7/7.4.md#count函数)
    - [SUM函数](./docs/chapter7/7.4.md#sum函数)
    - [AVG函数](./docs/chapter7/7.4.md#avg函数)
    - [MAX和MIN函数](./docs/chapter7/7.4.md#max和min函数)
    - [GROUP BY关键字](./docs/chapter7/7.4.md#group-by关键字)
    - [HAVING关键字](./docs/chapter7/7.4.md#having关键字)
- 7.5 [连接查询](./docs/chapter7/7.5.md)
    - [内连接查询](./docs/chapter7/7.5.md#内连接查询)
    - [外连接查询](./docs/chapter7/7.5.md#外连接查询)
    - [复合条件连接查询](./docs/chapter7/7.5.md#复合条件连接查询)
- 7.6 [子查询](./docs/chapter7/7.6.md)
    - [带ANY、SOME关键字的子查询](./docs/chapter7/7.6.md#带any-some关键字的子查询)
    - [带ALL关键字的子查询](./docs/chapter7/7.6.md#带all关键字的子查询)
    - [带EXISTS关键字的子查询](./docs/chapter7/7.6.md#带exists关键字的子查询)
- 7.7 [合并查询结果](./docs/chapter7/7.7.md)
    - [UNION关键字](./docs/chapter7/7.7.md#union关键字)
    - [UNION ALL关键字](./docs/chapter7/7.7.md#union-all关键字)
- 7.8 [事务与锁基础](./docs/chapter7/7.8.md)
    - [什么是事务](./docs/chapter7/7.8.md#什么是事务)
    - [事务的四个特性](./docs/chapter7/7.8.md#事务的四个特性)
    - [什么是锁](./docs/chapter7/7.8.md#什么是锁)
    - [常见锁类型](./docs/chapter7/7.8.md#常见锁类型)
    - [事务隔离级别](./docs/chapter7/7.8.md#事务隔离级别)

#### 第8章 插入、更新与删除数据

- 8.1 [插入数据](./docs/chapter8/8.1.md)
    - [INSERT语句的语法](./docs/chapter8/8.1.md#insert语句的语法)
    - [为表的所有字段插入数据](./docs/chapter8/8.1.md#为表的所有字段插入数据)
    - [为表的指定字段插入数据](./docs/chapter8/8.1.md#为表的指定字段插入数据)
    - [同时插入多条记录](./docs/chapter8/8.1.md#同时插入多条记录)
    - [将查询结果插入到表中](./docs/chapter8/8.1.md#将查询结果插入到表中)
- 8.2 [更新数据](./docs/chapter8/8.2.md)
    - [UPDATE语句的语法](./docs/chapter8/8.2.md#update语句的语法)
    - [更新部分数据](./docs/chapter8/8.2.md#更新部分数据)
    - [更新全部数据](./docs/chapter8/8.2.md#更新全部数据)
- 8.3 [删除数据](./docs/chapter8/8.3.md)
    - [DELETE语句的语法](./docs/chapter8/8.3.md#delete语句的语法)
    - [删除部分数据](./docs/chapter8/8.3.md#删除部分数据)
    - [删除全部数据](./docs/chapter8/8.3.md#删除全部数据)

#### 第9章 索引

- 9.1 [索引简介](./docs/chapter9/9.1.md)
    - [索引的含义和特点](./docs/chapter9/9.1.md#索引的含义和特点)
    - [索引的分类](./docs/chapter9/9.1.md#索引的分类)
    - [索引的设计原则](./docs/chapter9/9.1.md#索引的设计原则)
- 9.2 [创建索引](./docs/chapter9/9.2.md)
    - [创建表的时候创建索引](./docs/chapter9/9.2.md#创建表的时候创建索引)
    - [在已经存在的表上创建索引](./docs/chapter9/9.2.md#在已经存在的表上创建索引)
- 9.3 [删除索引](./docs/chapter9/9.3.md)
    - [使用ALTER TABLE删除索引](./docs/chapter9/9.3.md#使用alter-table删除索引)
    - [使用DROP INDEX删除索引](./docs/chapter9/9.3.md#使用drop-index删除索引)

#### 第10章 存储过程和函数

- 10.1 [存储过程和函数的概述](./docs/chapter10/10.1.md)
    - [什么是存储过程和函数](./docs/chapter10/10.1.md#什么是存储过程和函数)
    - [存储过程和函数的区别](./docs/chapter10/10.1.md#存储过程和函数的区别)
- 10.2 [创建存储过程和函数](./docs/chapter10/10.2.md)
    - [创建存储过程](./docs/chapter10/10.2.md#创建存储过程)
    - [创建存储函数](./docs/chapter10/10.2.md#创建存储函数)
    - [变量的使用](./docs/chapter10/10.2.md#变量的使用)
    - [定义条件和处理程序](./docs/chapter10/10.2.md#定义条件和处理程序)
    - [光标的使用](./docs/chapter10/10.2.md#光标的使用)
    - [流程控制的使用](./docs/chapter10/10.2.md#流程控制的使用)
- 10.3 [调用存储过程和函数](./docs/chapter10/10.3.md)
    - [调用存储过程](./docs/chapter10/10.3.md#调用存储过程)
    - [调用存储函数](./docs/chapter10/10.3.md#调用存储函数)
- 10.4 [查看存储过程和函数](./docs/chapter10/10.4.md)
    - [SHOW STATUS语句查看存储过程和函数的状态](./docs/chapter10/10.4.md#show-status语句查看存储过程和函数的状态)
    - [SHOW CREATE语句查看存储过程和函数的定义](./docs/chapter10/10.4.md#show-create语句查看存储过程和函数的定义)
    - [从information_schema.Routines表中查看存储过程和函数的信息](./docs/chapter10/10.4.md#从information_schemaroutines表中查看存储过程和函数的信息)
- 10.5 [修改存储过程和函数](./docs/chapter10/10.5.md)
    - [使用ALTER语句修改存储过程和函数](./docs/chapter10/10.5.md#使用alter语句修改存储过程和函数)
- 10.6 [删除存储过程和函数](./docs/chapter10/10.6.md)
    - [删除存储过程](./docs/chapter10/10.6.md#删除存储过程)
    - [删除存储函数](./docs/chapter10/10.6.md#删除存储函数)

#### 第11章 视图

- 11.1 [视图概述](./docs/chapter11/11.1.md)
    - [什么是视图](./docs/chapter11/11.1.md#什么是视图)
    - [视图的作用](./docs/chapter11/11.1.md#视图的作用)
- 11.2 [创建视图](./docs/chapter11/11.2.md)
    - [创建视图的语法](./docs/chapter11/11.2.md#创建视图的语法)
    - [在单表上创建视图](./docs/chapter11/11.2.md#在单表上创建视图)
    - [在多表上创建视图](./docs/chapter11/11.2.md#在多表上创建视图)
- 11.3 [查看视图](./docs/chapter11/11.3.md)
    - [DESCRIBE语句查看视图基本信息](./docs/chapter11/11.3.md#describe语句查看视图基本信息)
    - [SHOW TABLE STATUS语句查看视图基本信息](./docs/chapter11/11.3.md#show-table-status语句查看视图基本信息)
    - [SHOW CREATE VIEW语句查看视图详细信息](./docs/chapter11/11.3.md#show-create-view语句查看视图详细信息)
    - [在views表中查看视图详细信息](./docs/chapter11/11.3.md#在views表中查看视图详细信息)
- 11.4 [修改视图](./docs/chapter11/11.4.md)
    - [CREATE OR REPLACE VIEW语句修改视图](./docs/chapter11/11.4.md#create-or-replace-view语句修改视图)
    - [ALTER语句修改视图](./docs/chapter11/11.4.md#alter语句修改视图)
- 11.5 [更新视图](./docs/chapter11/11.5.md)
    - [更新视图中的数据](./docs/chapter11/11.5.md#更新视图中的数据)
    - [视图不可更新的部分](./docs/chapter11/11.5.md#视图不可更新的部分)
- 11.6 [删除视图](./docs/chapter11/11.6.md)
    - [DROP VIEW语句删除视图](./docs/chapter11/11.6.md#drop-view语句删除视图)

#### 第12章 触发器

- 12.1 [触发器概述](./docs/chapter12/12.1.md)
    - [创建触发器](./docs/chapter12/12.1.md#创建触发器)
    - [查看触发器](./docs/chapter12/12.1.md#查看触发器)
    - [删除触发器](./docs/chapter12/12.1.md#删除触发器)
- 12.2 [使用触发器](./docs/chapter12/12.2.md)
    - [INSERT触发器](./docs/chapter12/12.2.md#insert触发器)
    - [UPDATE触发器](./docs/chapter12/12.2.md#update触发器)
    - [DELETE触发器](./docs/chapter12/12.2.md#delete触发器)

#### 第13章 MySQL用户管理

- 13.1 [权限表](./docs/chapter13/13.1.md)
    - [user表](./docs/chapter13/13.1.md#user表)
    - [db表和host表](./docs/chapter13/13.1.md#db表和host表)
    - [tables_priv表和columns_priv表](./docs/chapter13/13.1.md#tables_priv表和columns_priv表)
    - [procs_priv表](./docs/chapter13/13.1.md#procs_priv表)
- 13.2 [账户管理](./docs/chapter13/13.2.md)
    - [创建用户](./docs/chapter13/13.2.md#创建用户)
    - [删除用户](./docs/chapter13/13.2.md#删除用户)
    - [修改用户密码](./docs/chapter13/13.2.md#修改用户密码)
- 13.3 [权限管理](./docs/chapter13/13.3.md)
    - [权限的授予](./docs/chapter13/13.3.md#权限的授予)
    - [权限的撤销](./docs/chapter13/13.3.md#权限的撤销)
    - [查看权限](./docs/chapter13/13.3.md#查看权限)
- 13.4 [访问控制](./docs/chapter13/13.4.md)
    - [连接核实阶段](./docs/chapter13/13.4.md#连接核实阶段)
    - [请求核实阶段](./docs/chapter13/13.4.md#请求核实阶段)

#### 第14章 数据备份与还原

- 14.1 [数据备份](./docs/chapter14/14.1.md)
    - [使用mysqldump命令备份](./docs/chapter14/14.1.md#使用mysqldump命令备份)
    - [直接复制整个数据库目录](./docs/chapter14/14.1.md#直接复制整个数据库目录)
    - [使用mysqlhotcopy工具快速备份](./docs/chapter14/14.1.md#使用mysqlhotcopy工具快速备份)
- 14.2 [数据还原](./docs/chapter14/14.2.md)
    - [使用mysql命令还原](./docs/chapter14/14.2.md#使用mysql命令还原)
    - [直接复制到数据库目录](./docs/chapter14/14.2.md#直接复制到数据库目录)
    - [mysqlhotcopy快速恢复](./docs/chapter14/14.2.md#mysqlhotcopy快速恢复)
- 14.3 [表的导出和导入](./docs/chapter14/14.3.md)
    - [用SELECT...INTO OUTFILE导出文本文件](./docs/chapter14/14.3.md#用selectinto-outfile导出文本文件)
    - [用mysqldump命令导出文本文件](./docs/chapter14/14.3.md#用mysqldump命令导出文本文件)
    - [用mysql命令导出文本文件](./docs/chapter14/14.3.md#用mysql命令导出文本文件)
    - [用LOAD DATA INFILE方式导入文本文件](./docs/chapter14/14.3.md#用load-data-infile方式导入文本文件)
    - [用mysqlimport命令导入文本文件](./docs/chapter14/14.3.md#用mysqlimport命令导入文本文件)

#### 第15章 MySQL日志

- 15.1 [日志简介](./docs/chapter15/15.1.md)
    - [MySQL日志的分类](./docs/chapter15/15.1.md#mysql日志的分类)
- 15.2 [二进制日志](./docs/chapter15/15.2.md)
    - [启动和设置二进制日志](./docs/chapter15/15.2.md#启动和设置二进制日志)
    - [查看二进制日志](./docs/chapter15/15.2.md#查看二进制日志)
    - [删除二进制日志](./docs/chapter15/15.2.md#删除二进制日志)
    - [使用二进制日志还原数据库](./docs/chapter15/15.2.md#使用二进制日志还原数据库)
    - [暂时停止二进制日志功能](./docs/chapter15/15.2.md#暂时停止二进制日志功能)
- 15.3 [错误日志](./docs/chapter15/15.3.md)
    - [启动和设置错误日志](./docs/chapter15/15.3.md#启动和设置错误日志)
    - [查看错误日志](./docs/chapter15/15.3.md#查看错误日志)
    - [删除错误日志](./docs/chapter15/15.3.md#删除错误日志)
- 15.4 [通用查询日志](./docs/chapter15/15.4.md)
    - [启动和设置通用查询日志](./docs/chapter15/15.4.md#启动和设置通用查询日志)
    - [查看通用查询日志](./docs/chapter15/15.4.md#查看通用查询日志)
    - [删除通用查询日志](./docs/chapter15/15.4.md#删除通用查询日志)
- 15.5 [慢查询日志](./docs/chapter15/15.5.md)
    - [启动和设置慢查询日志](./docs/chapter15/15.5.md#启动和设置慢查询日志)
    - [查看慢查询日志](./docs/chapter15/15.5.md#查看慢查询日志)
    - [删除慢查询日志](./docs/chapter15/15.5.md#删除慢查询日志)

#### 第16章 性能优化

- 16.1 [优化简介](./docs/chapter16/16.1.md)
    - [MySQL优化介绍](./docs/chapter16/16.1.md#mysql优化介绍)
    - [优化的原则](./docs/chapter16/16.1.md#优化的原则)
- 16.2 [优化查询](./docs/chapter16/16.2.md)
    - [分析查询语句](./docs/chapter16/16.2.md#分析查询语句)
    - [索引对查询速度的影响](./docs/chapter16/16.2.md#索引对查询速度的影响)
    - [使用索引查询](./docs/chapter16/16.2.md#使用索引查询)
    - [优化子查询](./docs/chapter16/16.2.md#优化子查询)
- 16.3 [优化数据库结构](./docs/chapter16/16.3.md)
    - [将字段很多的表分解成多个表](./docs/chapter16/16.3.md#将字段很多的表分解成多个表)
    - [增加中间表](./docs/chapter16/16.3.md#增加中间表)
    - [增加冗余字段](./docs/chapter16/16.3.md#增加冗余字段)
    - [优化插入记录的速度](./docs/chapter16/16.3.md#优化插入记录的速度)
    - [分析表、检查表和优化表](./docs/chapter16/16.3.md#分析表检查表和优化表)
- 16.4 [优化MySQL服务器](./docs/chapter16/16.4.md)
    - [优化服务器硬件](./docs/chapter16/16.4.md#优化服务器硬件)
    - [优化MySQL的参数](./docs/chapter16/16.4.md#优化mysql的参数)

#### 第17章 各种问题解决

- [让MySQL支持emoji图标存储](./docs/chapter17/17.1.md)
- [Centos6下升级MySQL数据库](./docs/chapter17/17.2.md)
- [MySQL修改密码](./docs/chapter17/17.3.md)
    - [mysqld_safe不存在修改密码](./docs/chapter17/17.3.md#mysqld_safe不存在修改密码)
    - [启动修改丢失的mysql单实例root密码方法](./docs/chapter17/17.3.md#启动修改丢失的mysql单实例root密码方法)
    - [Mac下重置MySQL的root密码](./docs/chapter17/17.3.md#Mac下重置MySQL的root密码)
    - [不重启mysqld修改密码的方法](./docs/chapter17/17.3.md#不重启mysqld的方法)
- [Centos7 默认为MariaDB导致mysql安装不上](./docs/chapter2/2.2.md#centos7安装mysql)
- [mysql命令不存在](./docs/chapter2/2.1.md#mysql命令不存在)
- [MySQL服务启动失败解决方案](./docs/chapter2/2.3.md#linux-下命令操作)
- [密码不满足当前的策略要求导致无法开启远程帐号](./docs/chapter3/3.1.md#开启mysql的远程帐号)


## 读者对象

整本书目录规划参考了其它几本 MySQL 书籍目录规划的，在我边学习边整理的过程可能有修改，这个过程有点慢，希望能完成，所以教程适合以下读者学习阅读使用：

- MySQL 数据库初学者。
- 对数据库开发感兴趣，希望快速、全面掌握 MySQL 的人员。
- 对其他数据库有一定的了解，想转到 MySQL 平台使用它的开发者。
- 像我一样被逼无奈使用 MySQL 数据库的人。

从目录来看，看上去内容丰富，比较完整的介绍了 MySQL 数据库技术的教程，我不是`DBA`，我不是，正在看这篇文章的你，很可能也不是，不想误人子弟，在项目中应用了一段时间 MySQL，如果你是`DBA`请多多指教，文采不佳还望高抬贵手，不甚感激，小弟在这里给您鞠躬，欢迎给我纠错。

~~我想念一个女孩儿，实属无奈我得继续努力，好好读书做个有趣的人，完成我的“著作”，待我著作完成可否跟我约个会？~~ 还没有写完就结婚了，欢迎大家 PR 补充完善 :)。

## Contributors

As always, thanks to our amazing contributors!

<a href="https://github.com/jaywcjlove/mysql-tutorial/graphs/contributors">
  <img src="https://jaywcjlove.github.io/mysql-tutorial/CONTRIBUTORS.svg" />
</a>

Made with [action-contributors](https://github.com/jaywcjlove/github-action-contributors).

## License

Licensed under the MIT License.
