mcpField
Q
query-writing

query-writing

github.com/langchain-ai数据与数据库30.7k1.3k 次安装今天更新
代码仓库

关于 query-writing

query-writing 是一项技能,指导使用数据库工具编写、执行 SQL 查询并处理错误,适用于从单表或多表数据回答问题的 Agent,并强调只读且聚焦的查询。

主要功能

  1. 01简单与复杂查询工作流
  2. 02编写查询前检查结构
  3. 03规划 JOIN 与聚合
  4. 04执行查询及错误恢复
  5. 05只读查询质量规范

适用场景

  1. 01回答基于单个数据库表的问题
  2. 02联接相关表进行分析
  3. 03排查 SQL 错误或异常结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/langchain-ai/deepagents --skill query-writing

安装后在 Claude Code 中输入/query-writing确认已加载。

详细介绍

查询编写技能

简单查询工作流

适用于针对单个表的简单问题:

  1. 确定表 - 哪个表包含所需数据?
  2. 获取结构 - 使用 sql_db_schema 查看列
  3. 编写查询 - 使用 WHERE/LIMIT/ORDER BY 选择相关列
  4. 执行 - 使用 sql_db_query 运行
  5. 格式化回答 - 清晰地呈现结果

复杂查询工作流

适用于需要多个表的问题:

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;

错误恢复

如果查询失败或返回意外结果:

  1. 结果为空 — 对照表结构核对列名和 WHERE 条件;检查大小写敏感性或 NULL 值
  2. 语法错误 — 重新检查 JOIN、GROUP BY 的完整性以及别名引用
  3. 超时 — 添加更严格的 WHERE 过滤条件或 LIMIT 以减小结果集,然后再优化

质量准则

  • 仅查询相关列(不使用 SELECT *)
  • 始终应用 LIMIT(默认 5)
  • 使用表别名以提高可读性
  • 对于复杂查询:使用 write_todos 进行规划
  • 切勿使用 DML 语句(INSERT、UPDATE、DELETE、DROP)

评论

支持 Markdown