用 BaseHalf 和 AI 快速入门 SQL 查询
把本地 BaseHalf 画布当成 SQL 学习地图(笔记、PostgreSQL 文档链接和练习都是卡片),再让 Claude Code 或 Codex 根据你连上的文件讲解和出题。
我们想要一条短一点的 SQL 入门路径,不要从聊天粘贴或随手开的教程标签页开始。目标很窄:能在一个小 schema 上写出正确的 SELECT(含过滤、连接和简单聚合),再对照官方文档核对自己的答案。不是「成为 DBA」。
BaseHalf 已经有这些零件。普通文件夹打开就是画布,卡片就是文件,连线会把纯文本 upstream 写进目标文件。右侧 Agent Area 里开着 Claude Code 或 Codex,读你指给它们看的东西。我们把这套当成 SQL 查询的学习地图来用,而不是某个新的「学习模式」。

文件夹就是大纲
建一个文件夹,用 BaseHalf 打开,结构故意保持无聊:
sql-fundamentals/
00-goal.md
concepts/
tables-and-rows.md
select-where-order.md
joins-inner-left.md
group-by-aggregates.md
schema/
sample-schema.sql
exercises/
01-select.md
02-join.md
03-aggregate.md
sources.md00-goal.md 用一段话写清边界:这条路径结束时「完成」长什么样。sources.md 放你要对照核验的链接,从 PostgreSQL Tutorial Part I 起,尤其是 Querying a Table、Joins Between Tables 和 Aggregate Functions。若顺带看 Microsoft Learn 的 T-SQL 入门路径,记下方言差异;这个文件夹里以 PostgreSQL 文档为准。
在画布上把每道练习连到对应概念笔记和 sources.md。Git 看得到这些 upstream 列表,下一次 Agent 会话也看得到。
对着连上的文件提问
选中一张概念卡或一道练习,先看状态栏确认「这个」指什么,再在 Agent Area 里问。提示词绑在文件上,不要空喊「教我 SQL」:
- 「根据这道练习的 upstream 笔记,解释
WHERE和连接之后再过滤的差别。针对sample-schema.sql给一条错的、一条对的。」 - 「只用
joins-inner-left.md和sources.md里的 PostgreSQL join 教程链接,考我 INNER 和 LEFT JOIN。等我答完再公布你的答案。」 - 「我把查询写在
exercises/03-aggregate.md里了。对照 upstream 概念笔记里的 GROUP BY 规则检查,标出编造的函数。」
Agent 读你连上的文件,比记住三轮前你打的字更靠谱。关系写在文件里,下一会话开头就还在。
练习和验收标准
| 练习 | 你应能做到 | 验收 |
|---|---|---|
| 查询 / 过滤 / 排序 | 单表 SELECT、WHERE、ORDER BY | 结果形状对得上 PostgreSQL select 教程里的例子 |
| 连接 | 在明确键上写 INNER JOIN 和 LEFT JOIN | 仅 LEFT 保留左侧未匹配行;不会默默丢掉 |
| 聚合 | 带 GROUP BY 的 COUNT / SUM / AVG | 聚合不进 WHERE;过滤分组用 HAVING |
在本地 Postgres(或你已有的客户端)上跑每条查询。把结果贴回练习笔记。让 Agent 对照验收那一行,不要中途让它另起一套 schema。
AI 常踩的坑
把模型输出当草稿。我们反复看到的失误:
- 需要保留未匹配行时用了
INNER JOIN,或反过来 - 在
WHERE里把NULL当成能用=比较的值(要用IS NULL) - 把 T-SQL 或 MySQL 习惯带进 PostgreSQL(
TOP、反引号、这边不存在的函数) - 编造助手函数(
IFNULL、不存在的日期函数),而不是去读sources.md里的文档
当 Agent 和上面的 PostgreSQL 教程页冲突时,文档说了算。改概念笔记,而不是改文档。
这不是什么
这条路径不是可视化思考的元文章,BaseHalf 也不会替你自动生成知识图谱。你只是把普通的 Markdown 和 SQL 文件摆在画布上,连线让 upstream 进 Git,再让 Claude Code 或 Codex 根据这些文件讲解和出题。还是同一个桌面产品:文件夹当画布,连线写进文件,Agent 在右侧。
当 00-goal.md 和三道练习都能在不依赖 Agent「给最终答案」的情况下通过验收,这条路径就结束了。下一个领域用同样的办法:另一个文件夹,另一张地图,还是那些读你连线的 Agent。