MySQL 系统学习 第一阶段:数据库基础(Database Fundamentals)

第一章 什么是数据库(Database)

先思考一个问题。

假设你写一个 Vue 项目,有一个用户注册功能。

注册之后需要保存:

id 用户名 密码 年龄
1 Tom 123456 20
2 Jack 654321 22

这些数据放哪里?

最开始,很多人会想到:

复制代码
复制代码
user.json

内容:

复制代码
复制代码
[
    {
        "id":1,
        "name":"Tom",
        "age":20
    },
    {
        "id":2,
        "name":"Jack",
        "age":22
    }
]

或者

复制代码
复制代码
user.txt
复制代码
复制代码
Tom
Jack
Lucy

这当然可以。

但是问题来了。


文件存储的问题

例如现在有一百万用户。

复制代码
复制代码
user.json

已经变成

复制代码
复制代码
800MB

如果查找

复制代码
复制代码
Tom

程序需要:

复制代码
复制代码
打开文件
↓

读取全部内容

↓

遍历

↓

找到Tom

时间复杂度就是

复制代码
复制代码
O(n)

数据越多越慢。


如果现在修改:

复制代码
复制代码
Jack

流程:

复制代码
复制代码
读取整个文件

↓

修改

↓

重新写整个文件

效率非常低。


如果两个程序同时修改:

程序A

复制代码
复制代码
修改Tom

程序B

复制代码
复制代码
修改Lucy

可能出现:

复制代码
复制代码
A覆盖B

或者

B覆盖A

数据丢失。


如果突然断电:

复制代码
复制代码
写了一半

文件损坏。

例如:

复制代码
复制代码
{
"id":1,
"name":"Tom"
"id":

JSON直接坏掉。


所以,文件不适合作为大型数据存储。


数据库就是为了解决这些问题

数据库(Database):

数据库是按照一定规则组织、存储、管理数据的软件系统。

它不是一个文件。

而是一套完整的软件。

例如:

复制代码
复制代码
MySQL

里面可以保存:

复制代码
复制代码
用户

订单

商品

日志

权限

评论

例如:

复制代码
复制代码
school

数据库里面:

复制代码
复制代码
student

teacher

course

score

这些叫:

复制代码
复制代码
表(Table)

数据库能做什么?

数据库主要负责四件事情:

复制代码
复制代码
增加(Create)

读取(Read)

修改(Update)

删除(Delete)

简称:

复制代码
复制代码
CRUD

以后你写 NestJS:

复制代码
复制代码
@Post()
create(){}

@Get()
find(){}

@Patch()
update(){}

@Delete()
remove(){}

本质就是操作数据库。


数据库的发展

第一代

文件系统

复制代码
复制代码
txt

excel

json

问题很多。


第二代

关系型数据库

例如:

复制代码
复制代码
MySQL

Oracle

SQL Server

PostgreSQL

使用:

复制代码
复制代码
表(Table)

保存数据。

例如:

复制代码
复制代码
student
id name age
1 Tom 18
2 Jack 20

第三代

NoSQL数据库

例如:

  • Redis
  • MongoDB
  • Cassandra

它们不用表。

以后我们学习 Redis 就属于这里。


第二章 DB、DBMS、RDBMS 到底是什么?

很多人第一次学数据库,最容易混淆这几个缩写。

其实它们之间是这样的关系:

复制代码
复制代码
               DBMS(数据库管理系统)
                      │
        ┌─────────────┼─────────────┐
        │             │             │
      MySQL       PostgreSQL     Oracle
        │
        ▼
   创建 Database(数据库)
        │
        ▼
      school
        │
   ┌────┴────┐
student    teacher

DB(Database)

Database

意思:

数据库

例如:

复制代码
复制代码
school

里面有很多表。

复制代码
复制代码
student

teacher

course

所以:

复制代码
复制代码
Database

不是MySQL

而是:

school

mall

company

都属于 Database。


DBMS(Database Management System)

数据库管理系统。

例如:

复制代码
复制代码
MySQL

就是:

管理数据库的软件。

作用:

复制代码
复制代码
创建数据库

删除数据库

管理数据库

备份数据库

恢复数据库

例如:

复制代码
复制代码
MySQL

↓

创建

school

RDBMS

Relational Database Management System

关系型数据库管理系统。

为什么叫关系?

因为:

所有数据之间都有关系。

例如:

用户:

id name
1 Tom
2 Jack

订单:

id user_id
1 1
2 2

订单中的:

复制代码
复制代码
user_id

对应:

复制代码
复制代码
用户.id

这就是:

关系(Relation)。


所以:

复制代码
复制代码
MySQL

Oracle

PostgreSQL

都是:

复制代码
复制代码
RDBMS

第三章 什么是表(Table)

数据库里面最重要的概念就是:

复制代码
复制代码
Table

例如:

学生信息。

复制代码
复制代码
student
id name age
1 Tom 20
2 Jack 22

可以理解成:

Excel。

数据库里面每一个表,都像一个 Excel 工作表。


行(Row)

例如:

复制代码
复制代码
Tom
20

这一整条。

叫:

复制代码
复制代码
Row

又叫:

复制代码
复制代码
Record(记录)

列(Column)

例如:

复制代码
复制代码
id

name

age

这些叫:

复制代码
复制代码
Column

以后开发时,你会经常听到:

  • 字段(Field)
  • 列(Column)

它们在很多场景下可以理解为同一个概念。


单元格(Cell)

例如:

复制代码
复制代码
Tom

就是一个 Cell。


所以:

复制代码
复制代码
Table

↓

Column

↓

Row

↓

Cell

第四章 什么是 SQL?

SQL:

Structured Query Language(结构化查询语言)

它不是一种编程语言,而是一种专门用于操作关系型数据库的语言

例如:

查询所有用户:

复制代码
复制代码
SELECT * FROM user;

新增用户:

复制代码
复制代码
INSERT INTO user(name, age)
VALUES ('Tom', 20);

修改用户:

复制代码
复制代码
UPDATE user
SET age = 21
WHERE id = 1;

删除用户:

复制代码
复制代码
DELETE FROM user
WHERE id = 1;

以后无论使用 NestJS、Java、Python、Go,底层最终都会执行 SQL(即使使用 ORM,ORM 也会帮你生成 SQL)。


第五章 为什么后端必须学习数据库?

作为一名后端开发者,数据库几乎贯穿所有业务场景:

  • 用户注册:保存用户信息。
  • 用户登录:查询用户名和密码。
  • 商品管理:保存商品数据。
  • 订单系统:记录订单。
  • 权限系统:保存角色和权限。
  • 日志系统:记录操作日志。

如果没有数据库,后端几乎无法完成这些核心功能。


本阶段需要掌握的核心概念

概念 需要理解的内容
Database(数据库) 存储和组织数据的逻辑容器
DBMS 管理数据库的软件,如 MySQL
RDBMS 使用表和关系组织数据的数据库管理系统
Table(表) 数据的主要存储结构
Row(行) 一条记录
Column(列) 一个字段
SQL 操作数据库的标准语言
CRUD 增、查、改、删四种基本操作

本章思考题(建议你先回答)

  1. 为什么大型项目通常不会直接使用 JSON 文件保存业务数据?
    JSON 文件适合保存配置、小型数据,不适合作为业务数据库,因为它查询效率低、并发能力弱、没有事务、不支持索引、容易损坏,而 MySQL 提供索引、事务、锁机制、日志恢复等能力,因此大型项目都会使用数据库。
  2. DatabaseMySQL 有什么区别?
    MySQL 是数据库管理系统(DBMS),用于创建和管理数据库;Database 是实际存储数据的逻辑容器,一个 MySQL 实例中可以创建多个 Database。
  3. 一张数据表由哪些基本元素组成?
    一张数据表主要由表名、列(字段)、行(记录)和单元格组成。其中列定义数据类型,行表示一条完整的数据记录。
  4. SQL 是编程语言吗?它的主要作用是什么?
    SQL 不是通用编程语言,而是一种用于操作关系型数据库的标准语言,主要负责数据库的增删改查、表结构定义、权限管理等操作。
  5. 为什么说后端开发离不开数据库?
    后端的职责之一就是处理和持久化业务数据,而数据库是最常见的数据持久化方式。无论是用户、订单、商品还是日志,几乎所有业务数据都需要存储在数据库中,因此数据库是后端开发的核心基础设施。

第一阶段知识总结

复制代码
数据库基础
│
├── 为什么需要数据库
│
├── 文件存储的问题
│      ├── 查询慢
│      ├── 并发差
│      ├── 容易损坏
│      ├── 不支持事务
│      └── 不支持复杂查询
│
├── DB(数据库)
│
├── DBMS(数据库管理系统)
│
├── RDBMS(关系型数据库)
│
├── Table(表)
│      ├── Column(列)
│      ├── Row(行)
│      └── Cell(单元格)
│
└── SQL