返回博客

15 数据库到底是干嘛的?不是让你背 SQL,是存东西的

15 数据库到底是干嘛的?不是让你背 SQL,是存东西的

导语:数据是网站的命根子。程序会重启、会崩溃,但数据要一直在——这就是数据库存在的理由,跟背 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 不是数据库的替代品,是加速器。