Skip to main content

数据库基础:让自己的应用记住数据

从“刷新后内容没了”开始理解数据库。面向零基础开发者和小微团队,以 SQLite、MySQL、PostgreSQL 为主,用一个书签应用学会建表、增删改查、连接 API、保护自己的记录以及备份。

目录不大搬家,主线和选修分开

部分定位本阶段成果
1. 关系型数据库必修,先做 SQLite,再认识 MySQL 的 SQL 差异新增、查询、修改和删除书签
2. 非关系型数据库选修,先了解 MongoDB/Redis 用途能解释为什么首个项目暂时不加第二个数据库
3. CMS 与 API做内容站时选修用 Strapi 管理并展示文章
4. 前后端联调必修,先选一种驱动,ORM 二选一页面刷新后仍有数据
5. Supabase 与 PostgreSQL托管数据库主线一个带用户隔离的云端数据表
6. Cognito 与 DynamoDB已使用 AWS 的读者选修复用托管身份,不额外自建账号系统
7. 托管数据库选择与连接替换复杂自托管认证内容选定 Vercel、Netlify、Cloudflare、AWS 或 Supabase 的适用方案
8. 小项目数据设计替换数据工程内容两张表、一次加字段、一次 CSV 导入
9. 数据安全与备份只保留必要底线参数化查询、数据隔离、可恢复备份
10. 书签项目实战一个项目只选一种主数据库用户保存书签,管理员处理违规内容

前六部分维持原有目录,MongoDB、Redis、CMS、Cognito 是解决特定问题的备选,不要求通关所有技术。后四部分沿用原位置但重写为小项目练习,不再要求自托管认证适配器、多租户组织、ETL、CDC、Outbox、分库分表、主从复制和多数据库同步。

推荐学习顺序

第一次学习:第1部分的 SQLite → 基础 SQL → 第4部分 API 联调 → 第5部分 PostgreSQL/Supabase → 第7至10部分。MySQL 用来理解另一种常用关系库,能在本地重复同样的 CRUD 即可;不用同时购买两套云数据库。

Prisma 和 Drizzle 先选一种,不用为了 ORM 迁移已经能正常运行的项目。遇到前端页面、后端路由、后台权限问题,到工程册边做边学。

三种数据库如何选

数据库适合的第一步边界
SQLite本地练习、单机小工具、低并发业务数据文件需要持久磁盘和备份;不能丢进临时函数磁盘当长期数据库
MySQL已有服务器或已有 MySQL 的小企业负责账号权限、连接与备份;无需一开始购买托管实例
PostgreSQLSupabase 或其他托管 PostgreSQL使用服务提供的安全连接串,核对连接数、休眠和费用
Cloudflare D1Workers 上的小型关系数据基于 SQLite,但不是上传一个文件后就能复用所有 Node 驱动

Vercel 和 Netlify 是应用部署入口,不等于一种 SQL 方言;它们的数据库集成、合作服务与产品名称可能变化。跟随控制台提供的连接方式,确认最终数据库类型和账单归属。AWS 的托管关系库可能有持续费用,不默认开通 RDS。

第一张表

安装 SQLite 命令行后打开独立实验库:

sqlite3 bookmarks.db

在 SQLite 提示符中逐条执行:

CREATE TABLE bookmarks (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
url TEXT NOT NULL
);
INSERT INTO bookmarks(title, url) VALUES ('学习记录', 'https://example.com');
SELECT id, title, url FROM bookmarks;

退出再打开,同一条记录还在,这就是本轮最重要的结果。先用虚构数据,不导入公司的用户信息。

AI 帮忙,但由你验收

给 Codex 的需求写清数据库类型、表结构、执行环境和期望结果,要求参数化查询,禁止把连接串写进前端。修改数据前先预览受影响的行;删除表、清空库或覆盖备份必须先确认目标。

每章留下实际查询结果、失败案例和恢复办法。最终验收不是能背术语,而是:页面能保存数据;账号 A 不能看到 B 的私有记录;备份能恢复到新库;知道免费额度用完时怎么处理。