Skip to content

第 03 章 数据库、SQL 与数据管理

学习目标

掌握数据库基本概念、SQL 基础、事务 ACID、数据仓库和大数据基础。考试不一定让你写复杂 SQL,但会考概念和执行逻辑。

考点地图

高频:主键、外键、索引、JOIN、GROUP BY、WHERE/HAVING、事务、隔离级别、OLTP/OLAP、ETL、数据仓库。

1. 数据库基础

数据库 DB 是长期存储、有组织的数据集合。
数据库管理系统 DBMS 用于管理数据库,如 MySQL、PostgreSQL、Oracle。
数据库系统 DBS = 数据库 + DBMS + 应用程序 + 用户 + 管理制度。

2. 表、字段、记录

  • 表:二维结构。
  • 字段/列:属性,如姓名、年龄、收入。
  • 记录/行:一条具体数据。
  • 主键:唯一标识一行记录。
  • 外键:引用另一张表的主键,建立表间关系。

例子:

用户表 users(user_id, name)user_id 是主键。
订单表 orders(order_id, user_id, amount)user_id 是外键,关联用户表。

3. 关系型与非关系型数据库

类型特点例子
关系型表结构、SQL、事务强MySQL、PostgreSQL
文档型JSON 文档,结构灵活MongoDB
键值型key-value,读写快Redis
列式按列存储,分析快ClickHouse
图数据库节点和边Neo4j

AI 训练中经常同时使用多类存储:业务数据在关系库,缓存用 Redis,日志进大数据平台,向量进向量数据库。

4. SQL 基础

4.1 SELECT 基本结构

sql
SELECT province, COUNT(*) AS cnt
FROM users
WHERE age >= 18
GROUP BY province
HAVING COUNT(*) > 100
ORDER BY cnt DESC
LIMIT 10;

逻辑执行顺序:

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT。

重点区别:

  • WHERE:分组前过滤行。
  • HAVING:分组后过滤聚合结果。

4.2 常见聚合函数

  • COUNT:计数。
  • SUM:求和。
  • AVG:平均值。
  • MAX:最大值。
  • MIN:最小值。

4.3 JOIN

JOIN含义
INNER JOIN两边匹配才保留
LEFT JOIN保留左表全部,右表无匹配为 NULL
RIGHT JOIN保留右表全部
FULL JOIN两边都保留

考试技巧:看到“保留左表所有记录”,选 LEFT JOIN。

5. 索引

索引类似书的目录,能加快查询,但不是越多越好。

优点:

  • 提高查询速度。
  • 加快排序和连接。

代价:

  • 占用额外存储。
  • 插入、更新、删除时需要维护索引,可能变慢。

适合建索引:经常用于 WHERE、JOIN、ORDER BY 的字段。
不适合:取值很少、频繁更新、表很小的字段。

6. 事务 ACID

事务是一组操作,要么全部成功,要么全部失败。

ACID:

  • Atomicity 原子性:不可分割,要么全做要么全不做。
  • Consistency 一致性:事务前后满足约束。
  • Isolation 隔离性:并发事务互不干扰。
  • Durability 持久性:提交后持久保存。

例子:转账要同时扣 A 账户和加 B 账户。只扣不加就破坏一致性。

7. 并发问题和隔离级别

并发读写可能出现:

  • 脏读:读到别人未提交的数据。
  • 不可重复读:同一事务两次读同一行结果不同。
  • 幻读:同一事务两次查询范围,行数变了。

隔离级别从低到高:

  1. Read Uncommitted:可能脏读。
  2. Read Committed:避免脏读。
  3. Repeatable Read:避免不可重复读。
  4. Serializable:最高隔离,性能最低。

8. 数据备份与恢复

常见备份:

  • 全量备份:备份全部数据。
  • 增量备份:备份上次备份后变化的数据。
  • 差异备份:备份上次全量备份后变化的数据。

恢复目标:

  • RPO:最多能丢多少数据。
  • RTO:多久恢复服务。

9. 数据仓库、ETL 与大数据

9.1 OLTP 与 OLAP

类型目标场景
OLTP事务处理下单、支付、库存
OLAP分析查询报表、统计、决策分析

9.2 数据仓库

数据仓库特点:

  • 面向主题。
  • 集成。
  • 相对稳定。
  • 反映历史变化。

9.3 ETL

ETL = Extract 抽取、Transform 转换、Load 加载。

ELT = Extract 抽取、Load 加载、Transform 转换。云数仓常见 ELT。

9.4 大数据技术

  • Hadoop:HDFS 分布式存储 + MapReduce。
  • Spark:内存计算,适合批处理、机器学习、流处理。
  • 数据湖:保存原始、多格式数据。

10. 向量数据库

生成式 AI 和 RAG 中常见向量数据库。

用途:存储文本、图片等内容的 embedding 向量,支持相似度检索。

常见流程:

文档 -> 切分 -> embedding -> 存向量库 -> 用户问题向量化 -> 相似度检索 -> 返回相关片段。

常见相似度:

  • 余弦相似度。
  • 欧氏距离。
  • 点积。

易错点

易错点正确理解
WHERE 和 HAVING 一样错。WHERE 分组前,HAVING 分组后
索引越多越好错。索引会增加写入和维护成本
主键可以重复错。主键唯一且通常非空
事务提交后数据仍可能随意丢失错。持久性要求提交后保存
OLTP 适合复杂历史分析通常 OLAP 更适合分析

例题

例题 1

SQL 中对分组后的聚合结果进行过滤,应使用:

A. WHERE
B. HAVING
C. LIMIT
D. INSERT

答案:B。

例题 2

事务 ACID 中的 I 表示:

A. Isolation
B. Index
C. Input
D. Internet

答案:A。

例题 3

下列关于索引的说法正确的是:

A. 可以提高某些查询速度
B. 会占用存储空间
C. 可能降低写入性能
D. 越多越好

答案:ABC。

自测清单

  • 能解释主键、外键、索引。
  • 能区分 WHERE 和 HAVING。
  • 能说出 ACID 四个词。
  • 能区分脏读、不可重复读、幻读。
  • 能区分 OLTP 和 OLAP。