数据库入门到初级 · 第 01/22 篇。实验口径:MySQL 8.4、InnoDB、utf8mb4。案例:小型商城。
你准备开一家小网店。第一天只有两笔订单,用 Excel 记录商品、买家和金额,非常方便。一个月后,客服、仓库和财务都要改这张表:客服修改地址,仓库更新库存,财务核对付款。文件出现多个版本,谁手里的才是最新数据?如果两个人同时把库存从 1 改成 0,到底卖出了一件还是两件?
数据库就是从这些具体问题开始发挥作用的。学数据库的第一步,不是背命令,而是理解:我们需要一个能够让程序按规则保存、查找和修改数据的地方。
1. 三个常被混用的名字
| 名字 | 通俗解释 | 商城里的对应物 |
|---|---|---|
| 数据库 | 按一定结构组织的数据集合 | shop_lab 里的用户、商品和订单 |
| 数据库管理系统(DBMS) | 管理这些数据的软件 | MySQL 服务 |
| SQL | 与关系型数据库交流的语言 | “查询所有在售商品”的指令 |
严格说,MySQL 是数据库管理系统,但工作中常说“用 MySQL 数据库”。知道这层区别即可,不必纠结日常简称。

图中的业务应用可以是网站后台,也可以是手机应用对应的服务端。用户点击“查看订单”,通常是应用整理请求,再让数据库查询;浏览器一般不直接拿数据库账号连接数据库。
2. Excel 和数据库,各自擅长什么
Excel 擅长人工编辑、临时分析和可视化。数据库擅长让程序持续处理结构化数据,以及协调多个访问者。不是数据达到某个固定行数就必须迁移,而是要看协作方式、查询要求和一致性要求。
例如,“找出上个月消费金额超过 500 元的用户”涉及日期筛选、付款状态和按人汇总。用 SQL 可以把规则写下来,重复执行,不必每次手工筛选。
数据库还可以约束“邮箱不能重复”“订单必须属于一个存在的用户”“库存不能为负数”。不过,数据库不会自动理解所有业务:它不知道一次退款是否需要经理批准,除非应用和数据库规则共同表达了这件事。
3. 关系型数据库为什么使用表
关系型数据库常用表表达数据。商品表保存商品,用户表保存用户,订单表通过用户编号说明是谁下的单。这里的“关系”包含关系模型的数学背景,入门时先理解表与关联即可。
还有文档型、键值型等数据库。它们采用不同的数据组织和访问方式,适合不同问题。本系列先把关系型数据库学扎实,不把所有数据库产品堆在一起比较。
4. 看懂第一条 SQL
下面是预览,完成第 3、5、6 篇的环境和数据准备后即可执行:
SELECT name, price
FROM products
WHERE is_on_sale = 1;
从下往上理解业务来源也可以:去 products 商品表,筛选在售的记录,取出名称和价格。SELECT 描述想要的结果,具体怎样访问数据,由数据库决定。
SQL 关键字大小写通常不影响这里的含义;表名是否区分大小写受系统和配置影响,所以系列统一使用小写表名。每条语句以分号结束,便于客户端知道命令在哪里结束。
5. 本系列会带你做到什么
22 篇围绕一个小型商城展开。前半段解决“怎么把数据查出来”,后半段解决“怎么存得合理、改得正确、查得更快”。示例统一使用 MySQL 8.4、InnoDB 和 utf8mb4;SQLite、PostgreSQL、SQL Server 的部分语法与行为不同,迁移时需要查对应文档。
动手想一想
问题一:个人读书清单只有几十条,必须用数据库吗? 不必须。人工管理时,表格可能已经足够;需要多人协作、自动查询和程序接入时,再考虑数据库。
问题二:用了数据库,还会不会卖出负库存? 会。缺少约束或并发处理不正确时仍可能发生。第 17、18 篇会用下单过程解释如何防止它。
这一篇要带走的认识是:数据库不仅保存内容,还提供查询、约束、事务和访问控制能力;应用需要正确使用这些能力。
系列目录
- 数据库是什么?从 Excel 管数据说起
- 关系型数据库入门:表、行、列到底是什么
- 第一次使用数据库:从连接到执行 SQL
- 字段类型怎么选?数字、文字、日期各有讲究
- 创建第一张表:字段、主键与约束
- 增删改入门:把数据真正用起来
- SELECT 入门:查出你真正需要的数据
- 条件查询:把业务要求翻译成 WHERE
- 排序与分页:商品列表是怎么查出来的
- 聚合与分组:用 SQL 做简单统计
- 多表查询:JOIN 到底怎么理解
- 子查询与条件表达式:写出稍复杂的查询
- 从一个需求开始,怎么设计数据库表
- 一对一、一对多、多对多,分别怎么存
- 为什么要拆表?用例子理解数据库范式
- 一张表设计得好不好,看哪些细节
- 事务入门:为什么下单不能只执行一条 SQL
- 并发与锁:两个人同时买最后一件商品怎么办
- 索引入门:查询为什么会变快,也可能变慢
- 慢查询排查第一步:学会看执行计划
- 程序如何安全地使用数据库
- 数据库实战收尾:备份、恢复与完整项目练习