关于 query-writing
query-writing 是一项技能,指导使用数据库工具编写、执行 SQL 查询并处理错误,适用于从单表或多表数据回答问题的 Agent,并强调只读且聚焦的查询。
主要功能
- 01简单与复杂查询工作流
- 02编写查询前检查结构
- 03规划 JOIN 与聚合
- 04执行查询及错误恢复
- 05只读查询质量规范
适用场景
- 01回答基于单个数据库表的问题
- 02联接相关表进行分析
- 03排查 SQL 错误或异常结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ langchain-ai/ deepagents --skill query-writing安装后在 Claude Code 中输入/query-writing确认已加载。
详细介绍
查询编写技能
简单查询工作流
适用于针对单个表的简单问题:
- 确定表 - 哪个表包含所需数据?
- 获取结构 - 使用
sql_db_schema查看列 - 编写查询 - 使用 WHERE/LIMIT/ORDER BY 选择相关列
- 执行 - 使用
sql_db_query运行 - 格式化回答 - 清晰地呈现结果
复杂查询工作流
适用于需要多个表的问题:
1. 规划方法
使用 write_todos 拆分任务:
- 确定所需的全部表
- 梳理关系(外键)
- 规划 JOIN 结构
- 确定聚合方式
2. 检查表结构
对每个表使用 sql_db_schema,以找到连接列和所需字段。
3. 构造查询
- SELECT - 列和聚合函数
- FROM/JOIN - 基于 FK = PK 连接表
- WHERE - 在聚合前进行过滤
- GROUP BY - 包含所有非聚合列
- ORDER BY - 进行有意义的排序
- LIMIT - 默认 5 行
4. 验证并执行
检查所有 JOIN 是否都有连接条件、GROUP BY 是否正确,然后运行查询。
示例:按国家统计收入
SELECT
c.Country,
ROUND(SUM(i.Total), 2) as TotalRevenue
FROM Invoice i
INNER JOIN Customer c ON i.CustomerId = c.CustomerId
GROUP BY c.Country
ORDER BY TotalRevenue DESC
LIMIT 5;
错误恢复
如果查询失败或返回意外结果:
- 结果为空 — 对照表结构核对列名和 WHERE 条件;检查大小写敏感性或 NULL 值
- 语法错误 — 重新检查 JOIN、GROUP BY 的完整性以及别名引用
- 超时 — 添加更严格的 WHERE 过滤条件或 LIMIT 以减小结果集,然后再优化
质量准则
- 仅查询相关列(不使用 SELECT *)
- 始终应用 LIMIT(默认 5)
- 使用表别名以提高可读性
- 对于复杂查询:使用 write_todos 进行规划
- 切勿使用 DML 语句(INSERT、UPDATE、DELETE、DROP)
评论
支持 Markdown