§ 8·CS 地基3 prompts

数据库系统

会用就行。不需要深入数据库引擎实现。

先读这部分
§ 8

数据库系统

会用就行。不需要深入数据库引擎实现。

学到什么程度
  • CRUD。增删改查基本功。
  • 索引。为什么有索引查询就快(O(n) 变成 O(log n) 或 O(1))。
  • ORDER BY。排序;多列排序是第一列相等再看第二列。
  • Group By。分组聚合。
  • 聚合函数。求和、计数等。

能用 SQLite 写点小练习,知道这些操作在底层大概是怎么执行的。

动手做 · 提示词卡

把这段知识变成一段可执行的练习

以下 3 张卡,每张都是一段可复制的提示词。打开 Claude Code(或任何 LLM 终端),把卡里的提示词粘进去,AI 会陪你完成这一步。遇到不会的概念,把 AI 的回答贴回 卡里继续问下一步。可以一次做完,也可以分几次。

3 操作
Prompt 01操作★★

SQLite EXPLAIN 看计划

为什么要学AI 写的 SQL 慢得离谱。不会看 EXPLAIN 你只能干瞪眼。
打个比方看地图导航:是绕路还是直走?EXPLAIN 就是给 SQL 看路线。
VibeCoder 场景Claude Code 写的查询要 30 秒,你想知道是不是没走索引。

你想知道 SELECT 在 SQLite 底层到底是怎么执行的。

前置本地装好 sqlite3 命令
  1. 01sqlite3 test.db 建表。
  2. 02python 脚本插入 1 万行。
  3. 03EXPLAIN QUERY PLAN 看 SCAN。
  4. 04CREATE INDEX idx_age ON users(age)。
  5. 05再 EXPLAIN 看 SEARCH USING INDEX。
粘贴到 Claude Code(或任何 LLM 终端)
教我用 SQLite 的 EXPLAIN QUERY PLAN 看查询计划。1. 给我建表 SQL:users(id, name, age)。2. 给我 Python 代码插入 1 万行随机数据。3. 教我跑 EXPLAIN QUERY PLAN SELECT * FROM users WHERE age > 18,输出会有 SCAN users 这种话。4. 解释 SCAN(全表扫描)和 SEARCH(用索引)的区别。5. 现在 SCAN 是因为没索引,告诉我加哪条索引 SQL,加完再 EXPLAIN,输出应该变成 SEARCH USING INDEX。
✓ 完成判据同一条 SELECT 在加索引前后 EXPLAIN 输出从 SCAN 变 SEARCH。
不要在每个列上都加索引,写入会变慢,索引也占空间。
Prompt 02操作★★

加索引前后耗时对比

为什么要学索引知道概念不算数。亲手测一次差 100 倍,你才会主动想起加。
打个比方书后面的索引页 vs 一页页翻找;100 万行数据差距震撼。
VibeCoder 场景Claude Code 帮你写完查询慢得离谱,你想加个索引但还没体感。

你想自己测一次加索引能让查询快多少倍。

前置本地装好 Python 3 + sqlite3 模块(标准库自带)
  1. 01跑脚本插入 100 万行。
  2. 02看加索引前耗时(不会快)。
  3. 03加索引,再跑同样查询。
  4. 04比例至少 50 倍以上。
  5. 05把 age = 25 改成 age BETWEEN 20 AND 30,再跑看加速比变化。
粘贴到 Claude Code(或任何 LLM 终端)
写一段 Python 代码:1. 建一个 SQLite 表 users(id, name, age)。2. 插入 100 万行随机数据。3. 跑同一条 SELECT count(*) FROM users WHERE age = 25 共 100 次,记录总耗时。4. 加一个索引 CREATE INDEX idx_age ON users(age)。5. 再跑同样 100 次,记录耗时。6. 打印 '加索引前 X 秒、加索引后 Y 秒、加速 N 倍'。代码不超过 60 行。
✓ 完成判据控制台打印两个耗时,加索引后至少快 20 倍。
别在测耗时之前忘了 commit,事务里的查询会被缓存影响数字。
Prompt 03操作★★

多列 ORDER BY 练习

为什么要学数据展示永远要排序。多列 ORDER BY 不熟,AI 报表逻辑你看不懂。
打个比方通讯录按姓氏排序,同姓再按名排;先排哪列后排哪列重要。
VibeCoder 场景Claude Code 给你'按部门、再按工资倒序'的 SQL,你不确定对不对。

你要按'部门升序、部门相同时按工资降序'排员工表。

前置本地装好 sqlite3 命令
  1. 01建表插 10 行数据。
  2. 02跑 ORDER BY dept ASC, salary DESC 看输出。
  3. 03改成 salary ASC 再跑。
  4. 04自己说说多列 ORDER BY 是怎么稳定排序的。
粘贴到 Claude Code(或任何 LLM 终端)
写一段 SQL 在 SQLite 里跑:1. 建表 employees(id, dept, salary)。2. 插入 10 行示例数据,至少 3 个部门、每个部门 2-4 人、工资各不相同。3. 写一条 SELECT,按 dept 升序 + salary 降序输出。4. 解释多列 ORDER BY 的执行逻辑:先按第一列排,第一列相同的再按第二列排。5. 让我把 salary 改成升序再跑一次,对比输出变化。
✓ 完成判据你能脱稿写出 ORDER BY a ASC, b DESC 的语法并解释执行顺序。
ASC 是默认值,DESC 必须显式写;写错方向打印出来不容易一眼看出来。