Skip to content

数据库核心概念

为什么需要数据库

你可能会想:我用 Excel 也能存数据,用 JSON 文件也能存数据,为什么非要搞一个数据库?

来看一个例子。

没有数据库的世界

假设你在做一个「学生成绩管理系统」:

# students.json
[
  {"id": 1, "name": "张三", "score": 92},
  {"id": 2, "name": "李四", "score": 88}
]

文件存着,看起来没问题。但当数据量上来:

  • 查「数学成绩大于 90 分的学生」——你得用代码读整个文件、遍历、判断
  • 100 个人同时查——文件被锁住,有人读不到
  • 改了王五的成绩,保存的时候赵六刚好也在改——最后保存的人覆盖了另一个人的改动
  • 要查「平均分」「不及格人数」「排名」——自己写代码算

文件能存数据,但它不解决:查询、并发、安全、一致性 这些问题。

数据库,就是专门解决这些问题的系统。

DBMS 是什么

DBMS(Database Management System) —— 数据库管理系统,是操作数据库的软件。

你不用直接读写磁盘文件,而是通过 DBMS 提供的接口(SQL)来操作数据。DBMS 帮你搞定:

  • 数据存在哪、怎么存
  • 并发请求怎么处理
  • 查询怎么快速返回
  • 谁能访问什么数据

MySQL、Oracle、PostgreSQL、SQL Server 都是 DBMS。

常用 DBMS 对比

DBMS类型代表用户特点
MySQL关系型互联网公司免费、轻量、社区活跃
PostgreSQL关系型互联网 + 传统企业功能强大、扩展性好
Oracle关系型金融、大型企业贵、稳定、功能最全
SQL Server关系型微软生态企业Windows 集成度高
Redis键值型所有公司内存数据库,高速缓存
MongoDB文档型互联网公司无 schema,灵活性高

对于大多数 Web 应用,MySQL 是最务实的选择——够用、免费、生态成熟。

关系型数据库核心概念

RDBMS(Relational Database Management System) 是关系型数据库管理系统。它的核心思想是:用表(Table)来组织数据,表和表之间可以建立关系(Relation)

几个关键术语

sql
-- 学生表
CREATE TABLE student (
    id      INT PRIMARY KEY,     -- 学号,主键,唯一标识
    name    VARCHAR(50),         -- 姓名
    age     INT,                 -- 年龄
    class_id INT                 -- 班级编号,外键
);
术语解释例子
数据库(Database)存储数据的容器,一个 DBMS 可以管理多个数据库school_db
表(Table)数据的二维结构,行=记录,列=字段student
行(Row)一条记录,代表一个实体张三的整行信息
列(Column)一个字段,描述实体的某个属性nameage
主键(Primary Key)唯一标识每行,不能为空id
外键(Foreign Key)建立表与表之间的关联关系class_id 关联 class

举一个例子

一个学校管理系统,可能有以下几张表:

student 表:学号、姓名、年龄、班级编号
class 表:班级编号、班级名称、班主任
course 表:课程编号、课程名称、学分
score 表:学号、课程编号、成绩

student 和 class 通过 class_id 关联,score 表把 student 和 course 关联起来——这就是关系型数据库的「关系」。

SQL 是什么

SQL(Structured Query Language) —— 结构化查询语言,是操作 RDBMS 的标准语言。

不管你用的是 MySQL、Oracle 还是 PostgreSQL,SQL 语法大体相通。学会一套,触类旁通。

SQL 的分类:

分类缩写作用关键字示例
数据定义DDL定义数据库对象(库/表/索引)CREATE、DROP、ALTER
数据操作DML操作数据(增删改查)INSERT、DELETE、UPDATE、SELECT
数据控制DCL权限和安全控制GRANT、REVOKE
事务控制TCL事务管理COMMIT、ROLLBACK、SAVEPOINT

数据库分类

除了关系型数据库,还有其他类型的数据库:

键值数据库(KV Store)

  • Redis、Memcached
  • 适合缓存、Session 存储、排行榜
  • 优点:读写极快
  • 缺点:只能按 key 查,不支持复杂查询

文档数据库

  • MongoDB
  • 数据以 JSON 文档形式存储,schema 灵活
  • 适合内容管理、日志系统

列式数据库

  • HBase、Cassandra
  • 按列存储,适合海量数据分析
  • 适合 OLAP 场景

图数据库

  • Neo4j
  • 擅长处理关系网络(社交网络、知识图谱)

大多数业务系统,关系型数据库(MySQL/PostgreSQL)仍然是首选。

下一步

理解了数据库的基本概念,下一章我们来看看关系型数据库和 ER 模型——搞清楚数据表之间是怎么关联的,为什么这样设计。

基于 VitePress 构建