引言:
从今天开始,我们将启动MySQL的学习,本专栏将从零起步带大家学习整个MySQL的知识库,并且本专栏将会从最基础开始不断讲解,直到后面的进阶篇,大家有任何疑问可以在评论区交流学习,谢谢大家
一、MySQL 是什么?
在后端开发中,无论是写注册登录接口、商品系统还是订单管理系统,都离不开数据库。而 MySQL 几乎是最常用的选择之一。
✅ 定义
MySQL 是一种 关系型数据库管理系统(RDBMS) ,使用 SQL(结构化查询语言) 来存取和管理数据。
简单来说:它把数据以表格的形式存储,表与表之间存在关系。
✅ 特点
- 
结构化存储:数据以表格形式保存,清晰直观。
 - 
支持事务(Transaction):保障数据操作的安全性(ACID)。
 - 
SQL语句操作灵活:可以高效地查询、插入、删除、更新数据。
 - 
高兼容性:几乎所有编程语言和框架都支持 MySQL(尤其是 Java + Spring Boot)。
 - 
开源免费:MySQL 社区版完全开源,学习成本低。
 
二、MySQL 的基本组成结构
在 MySQL 中,最核心的概念就是"表"。
| 概念 | 说明 | 示例 | 
|---|---|---|
| 数据库(Database) | 存放表的集合 | shop_db | 
| 表(Table) | 存放数据的结构化集合 | user、order | 
| 行(Row) | 一条完整的数据记录 | 用户A的信息 | 
| 列(Column) | 某个字段 | username、password | 
| 主键(Primary Key) | 唯一标识某条记录的字段 | user_id | 
| 外键(Foreign Key) | 建立表之间的关系 | order 表中的 user_id | 
📌 举例:
CREATE TABLE user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50),
  password VARCHAR(100),
  email VARCHAR(100)
);
        这就创建了一个简单的用户表。每条记录就是一个用户。
三、MySQL vs NoSQL 的区别
随着互联网的发展,除了 MySQL 这种关系型数据库外,还出现了很多 NoSQL 数据库,比如 Redis、MongoDB、Cassandra 等。
| 对比项 | MySQL(SQL) | NoSQL(非关系型) | 
|---|---|---|
| 数据结构 | 表(结构化) | 文档、键值、列族或图(非结构化) | 
| 查询语言 | SQL(统一标准) | 各自API(无统一标准) | 
| 事务支持 | 强ACID(安全可靠) | 弱事务或最终一致性 | 
| 扩展方式 | 垂直扩展(加机器性能) | 水平扩展(加机器数量) | 
| 典型代表 | MySQL、PostgreSQL、Oracle | MongoDB、Redis、Neo4j、Cassandra | 
| 使用场景 | 用户系统、订单、财务 | 日志、缓存、社交关系、大数据 | 
🌟 举个实际例子:
| 场景 | 推荐数据库 | 
|---|---|
| 用户注册登录(字段固定) | ✅ MySQL | 
| 缓存验证码、Session | ✅ Redis | 
| 存储不定结构的JSON文档 | ✅ MongoDB | 
| 好友推荐(图结构) | ✅ Neo4j | 
👉 总结一句话:
MySQL 管"结构化数据",NoSQL 管"灵活数据"。
在实际项目中,通常是 MySQL + Redis + MongoDB 混合使用,各司其职。
四、MySQL 的内部数据模型
MySQL 属于 关系模型(Relational Model) ,它的核心思想是通过 实体-关系(ER) 的方式管理数据。
1️⃣ 实体与表(Entity & Table)
每个实体(如用户、订单)对应一张表。
实体的属性对应表的列。
2️⃣ 主键与外键
- 
主键(Primary Key):唯一标识表中的一条记录。
 - 
外键(Foreign Key):用来建立不同表之间的关系。
 
例如:
- 用户表(user)和订单表(order)之间通过 
user_id建立一对多关系。 
3️⃣ 关系类型
| 关系类型 | 示例 | 
|---|---|
| 一对一(1:1) | 用户与身份证信息 | 
| 一对多(1:N) | 用户与订单 | 
| 多对多(N:M) | 学生与课程 | 
五、MySQL 内部的存储引擎
MySQL 的存储方式可以根据需求切换不同的 存储引擎,每种引擎的底层实现方式不一样。
| 引擎 | 特点 | 使用场景 | 
|---|---|---|
| InnoDB | 支持事务、行级锁、崩溃恢复 | 默认引擎,适合大部分业务系统 | 
| MyISAM | 不支持事务,速度快 | 日志、统计类业务 | 
| Memory | 数据存放在内存中,速度极快 | 临时表、缓存 | 
| CSV | 以CSV文件形式存储 | 数据交换、导入导出场景 | 
👉 目前主流项目基本都使用 InnoDB。
六、总结与思维导图(文字版)
MySQL数据库学习总结
│
├─ 一、MySQL简介
│   ├─ 关系型数据库
│   ├─ 使用SQL语言
│   └─ 数据以表形式存储
│
├─ 二、MySQL vs NoSQL
│   ├─ SQL结构化 vs NoSQL非结构化
│   ├─ ACID vs 最终一致性
│   └─ 常用于不同业务场景
│
├─ 三、内部数据模型
│   ├─ 实体-关系模型
│   ├─ 主键、外键
│   └─ 一对多、多对多关系
│
└─ 四、存储引擎
    ├─ InnoDB(事务)
    ├─ MyISAM(高性能读)
    └─ Memory(内存表)
        七、结语
MySQL 是 Java 后端的"地基"。
无论是简单的用户登录系统,还是复杂的分布式电商平台,数据持久化与查询优化 都离不开它。
🌱 建议边学边练:搭建本地 MySQL + Navicat + Spring Boot 项目,做一些增删改查的小功能,你会真正理解数据库的价值。
