导语:数据是网站的命根子。程序会重启、会崩溃,但数据要一直在——这就是数据库存在的理由,跟背 SQL 一点关系都没有。
"学数据库是不是得先把 SQL 背熟?"——又一个新手误区。你不需要背 SQL,你需要先搞懂一件事:数据库是存东西的,而且是"丢了还能找回来"地存。
一、数据库是干嘛的:长期记忆
程序运行时的数据都在内存里——一重启就没了,就像你短期记忆:转身就忘。数据库把数据写到硬盘上,程序挂了、服务器重启了,数据还在——这是长期记忆。
打个比方:
- 内存 = 你脑子里正在想的事(随时忘)
- 数据库 = 你记在笔记本/保险柜里的账(永远在)
网站的用户、订单、文章、评论——全是靠数据库"记"下来的。没有数据库,网站一重启,所有用户数据全没了。
二、关系型 vs 非关系型:怎么选
数据库分两大类,记住一句话就够了:
- 关系型(MySQL、PostgreSQL):像Excel 表格,一行行、一列列,能查能统计。适合有结构的业务数据:用户、订单、文章。
- 非关系型(Redis、MongoDB):像键值柜子/文档柜,存法更自由。适合缓存、临时数据、结构不固定的数据。
| 对比 | 关系型(MySQL) | 非关系型(Redis) |
|---|---|---|
| 存储方式 | 表格(行+列) | 键值对 / 文档 |
| 适合 | 用户、订单、账目 | 缓存、计数器、会话 |
| 查询 | 结构化查询 | 按键取,极快 |
| 比喻 | Excel 表格 | 寄存柜 |
给小白的一句话:主数据用关系型(MySQL),加速用非关系型(Redis)——它俩不是二选一,是搭配用。Redis 的细节下一篇单独讲。
三、表结构:跟 AI 说人话,它帮你设计
"表结构设计"听起来吓人,其实就是设计这个 Excel 表格有几列。而且现在完全可以让 AI 帮你:
你只需要说人话:
"我要做一个记账小程序,用户能记收入支出,帮我设计 MySQL 表结构。"
AI 会给你类似这样的表:
| 表名 | 关键列 |
|---|---|
| users | id、用户名、密码(加密存)、注册时间 |
| records | id、用户 id、金额、类型(收入/支出)、备注、时间 |
经验:AI 设计完,你只需要看懂两件事——每张表是干嘛的、表之间怎么关联(user id 把两张表串起来)。看不懂就让 AI 用大白话解释,问它"这列是干嘛的"。
四、代码怎么连数据库
程序连数据库,靠一行"连接信息"(连接字符串),里面就 5 样:地址、端口、库名、用户名、密码:
# 示例:Python 连 MySQL(伪代码示意)
db = connect("mysql://用户:密码@127.0.0.1:3306/我的库")
三个经验:
- 密码别硬编码在代码里:写死在代码里,代码一泄漏密码就没了——用环境变量或配置文件管理。
- 本地连不上先查三层:① 数据库服务启动了没 ② 账号密码对不对 ③ 防火墙/安全组放行了没(第 10 篇讲过)。
- "localhost"和"服务器 IP"是两回事:在服务器上连库用
127.0.0.1(本地);从你电脑连服务器上的库,要写服务器 IP + 放行端口(或用第 11 篇的 SSH 隧道)。
五、顺带讲清:API 是什么
新手最常被绕晕的词,其实一句话:API(接口)就是"前端和数据库之间传话的窗口"。
关系是这样一条链:
用户点击(浏览器)→ 前端页面 → 调 API 接口 → 后端程序 → 读写数据库 → 结果原路返回
打个比方:你在餐厅点菜——菜单(API) 把你想吃的(请求)传给后厨(后端程序),后厨从冰箱(数据库) 取食材做好端出来。
所以"接口"不是玄学:前端不直接碰数据库(太危险),而是通过后端程序提供的 API 来读写。 下一篇我们动手时会实际看到这个流程。
六、常见报错排查表
| 报错(大意) | 原因 | 处理 |
|---|---|---|
| Connection refused | 数据库没启动 / 端口没放行 | 启动服务;查防火墙 |
| Access denied | 用户名或密码错 | 核对账号密码 |
| Unknown database | 库名写错 | 确认库确实存在 |
| Timeout | 网络不通 / 安全组没开 | 检查 IP、端口、安全组 |
经验:报错信息是给你看的说明书——把报错原文复制给 AI,加一句"我在部署 Python 网站连 MySQL",AI 基本能直接告诉你原因和命令。
七、避坑清单
- 备份!备份!备份!:数据库最值钱。上生产环境前先配好自动备份(云厂商都有,开启即可),重要库再手动定期导出。
- 别在生产库上乱删:
DELETE、DROP这类操作先确认影响范围,最好先在测试库试。删库跑路的段子不好笑,真发生在自己身上是灾难。 - 密码策略:数据库别用 root 裸跑(第 10 篇讲过),给每个项目建独立账号、最小权限。
- 先设计后写码:动手前花 10 分钟想清楚"要存哪些数据、怎么关联",比写一半再改表省太多事。
总结
- 数据库 = 项目的长期记忆,程序重启数据还在。
- 关系型(MySQL)管主数据像 Excel,非关系型(Redis)管缓存像寄存柜——搭配用,不是二选一。
- 表结构让 AI 帮你设计,你只需要看懂"每张表干嘛、表怎么关联"。
- 连接 = 地址+端口+库名+用户名+密码,密码别写死在代码里。
- API(接口)就是前端和后端数据库之间的"传话窗口",前端通过接口读写数据。
- 报错信息是说明书,复制给 AI 让它帮你查;备份永远排第一。
10 分钟小任务:登录服务器,用第 11 篇装好的 DBeaver 连上你的 MySQL,看两样东西:默认有哪些库(information_schema、mysql 这些)、你的项目库建了没——先"打开保险柜"看看里面什么样。下一篇讲加速器:Redis,什么数据该进缓存、什么不该。
下一篇:Redis 不是数据库的替代品,是加速器。
