阅读指南

本文记录 MySQL 8.0+ 的常用知识点和练习 SQL。

阅读前置:

知识点说明
文件和文件夹数据可以存到文件里,但数据库更适合管理结构化数据
表格Excel 表格有行和列,数据库表也可以先这样理解
终端命令能打开命令行,并执行 mysql -u root -p 这类命令
基础英文能看懂 usertitlecreated_at 这类字段名

阅读方式:先跟着示例建库、建表、插入、查询,再回头整理概念。

一、使用环境

本文档默认使用 MySQL 8.0+ 的常见写法,示例 SQL 尽量使用稳定、通用的语法。

项目使用
数据库MySQL 8.0+
字符集utf8mb4
排序规则utf8mb4_0900_ai_ci 或环境默认的 utf8mb4 排序规则
存储引擎InnoDB
示例项目小型博客系统

utf8mb4 才是 MySQL 里完整支持 Unicode 的字符集,可以正常保存中文和 emoji。不要把 MySQL 里的 utf8 当成完整 UTF-8。

二、阅读顺序

按这个顺序阅读:

  1. 快速入门:认识数据库,安装连接 MySQL,创建第一个库和表。
  2. 库表设计:字段类型、主键、自增、约束、字符集和存储引擎。
  3. 增删改查:掌握 INSERTSELECTUPDATEDELETE
  4. 多表查询:学习一对多、多对多、JOIN、聚合和分组。
  5. 索引事务和安全:知道索引为什么能加速查询,事务如何保证数据一致,权限和备份怎么做。

三、示例约定

SQL 关键字使用大写,表名和字段名使用小写加下划线:

SELECT id, username
FROM users
WHERE status = 'active';

示例里的数据库统一叫:

mysql_tutorial

后面的文章会逐步创建这些表:

表名含义
users用户表
categories文章分类表
posts文章表
comments评论表
tags标签表
post_tags文章和标签的关系表

四、几个容易混淆的词

简单解释
数据库一组相关数据的集合,例如一个博客系统的数据
数据库里的二维结构,例如用户表、文章表
表里的一条数据,例如一个用户
表里的一个字段,例如用户名、手机号
SQL操作数据库的语言
主键唯一标识一行数据的字段,常用 id
外键一个表里的字段引用另一个表的主键
索引帮助数据库更快查找数据的数据结构
事务把多条 SQL 当成一个整体,要么都成功,要么都失败

五、真实性说明

本文档会尽量避免这些容易误导或不推荐的写法:

不推荐直接学原因
MyISAM 作为默认引擎现代业务表通常优先使用 InnoDB,因为它支持事务、行级锁、外键
utf8 字符集MySQL 的 utf8 最多 3 字节,不能完整表示所有 Unicode 字符
不带 WHEREUPDATE / DELETE极容易误改或误删整张表
用浮点数保存金额FLOAT / DOUBLE 有精度问题,金额应该用 DECIMAL
把所有字段都建索引索引会占空间,也会降低写入速度

六、官方资料