深色模式
第 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. 并发问题和隔离级别
并发读写可能出现:
- 脏读:读到别人未提交的数据。
- 不可重复读:同一事务两次读同一行结果不同。
- 幻读:同一事务两次查询范围,行数变了。
隔离级别从低到高:
- Read Uncommitted:可能脏读。
- Read Committed:避免脏读。
- Repeatable Read:避免不可重复读。
- 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。