Chat2DB AI SQL 完整指南:一句话写出可执行查询的 3 步教程
【免费下载链接】Chat2DBChat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.项目地址: https://gitcode.com/GitHub_Trending/ch/Chat2DB
业务同学抛来一句"把上个月支付金额前十的门店拉出来看看",你不用再对着十几张表结构手写联表语句。Chat2DB 的 AI SQL 能力可以直接从一句话生成可执行查询,还能读懂复杂 SQL、给出慢查询优化建议、跨数据库转换语法。整个过程只需 3 步,而且接的是你自己的模型 API Key,数据不出自己环境。
快速上手:3 步跑通 AI SQL
第 1 步:配置模型。打开客户端左下角设置,进入 AI 模型配置页,新建一条配置并填写四项:提供方(OpenAI 兼容协议、Claude、Gemini 都支持)、模型名、API Key 和接口地址。社区版会把配置存在本地 localStorage,不会上传。
{ name: '团队 GPT', provider: 'OPENAI', // 或 CLAUDE / GEMINI / MINIMAX model: 'gpt-4o-mini', baseUrl: 'https://api.example.com/v1', apiKey: 'sk-****', temperature: 0.2, defaultConfig: true // 之后默认走这条配置 }保存后点"测试连接",看到 success 返回就说明接口通。
第 2 步:打开 AI 面板。连接好任意数据库(本文示例用的是一套 mall 商城库),在 SQL 工作台右侧唤起 AI 对话面板,它会自动带上当前数据源的上下文。
第 3 步:用一句话要数据。输入"拉一下上个月支付金额前十的门店,带上门店名和支付单量",AI 结合已选表结构直接给出:
SELECT s.shop_name, COUNT(o.order_id) AS pay_order_count, SUM(o.pay_amount) AS total_pay_amount FROM mall.pay_order o JOIN mall.shop s ON s.shop_id = o.shop_id WHERE o.pay_time >= '2026-08-01' AND o.pay_time < '2026-09-01' GROUP BY s.shop_id, s.shop_name ORDER BY total_pay_amount DESC LIMIT 10;✅ 点一下执行,结果就出来了。后面三个场景,都是在你已经跑通这一步之后会自然遇到的问题。
场景拆解:AI SQL 的四个高频用法
读复杂 SQL:让 AI 解释别人留下的查询
适用人群:接手项目、评审同事 SQL 的开发者。在编辑器里选中一段 SQL,在 AI 面板选择"解释 SQL",它会把 CTE 嵌套、窗口函数这类写法翻译成大白话。看不懂"为什么这条语句要扫两遍同一张表"时,直接追问一句,比翻文档快得多。
一句话生成 SQL:业务提需求,AI 出初稿
适用人群:被运营和产品频繁催数据的分析师。要点是先选表再提问——把pay_order、shop、cust_info这几张相关表勾上,AI 的候选列就收窄了,生成的 SQL 会稳定得多。描述里把时间口径、排序字段、数量限制说清楚(比如"上个月""前十"),返工率能降到很低。
慢查询优化:从 8.6 秒到 1 秒以内
适用人群:被工单追"这个报表页太卡"的开发。下面是真实结构里常见的一条慢语句:pay_order表 500 万行,这条查询走完全表扫描,实测耗时 8.6 秒——问题出在IN子查询和外层 LEFT JOIN 的重复过滤上。
SELECT o.order_id, o.pay_amount, c.cust_name FROM mall.pay_order o LEFT JOIN mall.cust_info c ON c.cust_id = o.cust_id WHERE o.cust_id IN ( SELECT ci.cust_id FROM mall.cust_info ci WHERE ci.reg_channel = 'APP' ) ORDER BY o.pay_time DESC LIMIT 200;把这段粘给 AI 的"优化 SQL"入口,它会指出子查询可合并为 JOIN、LEFT JOIN实际应改成INNER JOIN,并建议给pay_time补一个索引。重写后:
SELECT o.order_id, o.pay_amount, c.cust_name FROM mall.pay_order o JOIN mall.cust_info c ON c.cust_id = o.cust_id WHERE c.reg_channel = 'APP' ORDER BY o.pay_time DESC LIMIT 200;同样的数据量下,这条语句稳定落在 1 秒内。📌 注意 AI 给的是建议而不是银弹,EXPLAIN确认索引生效后再上线。
跨库转换:MySQL 语法自动适配 PostgreSQL
适用人群:做数据库迁移、维护多套环境的 DBA。选择"SQL 转换",指定目标库类型,方言差异会被自动处理,典型如日期函数和区间写法:
-- MySQL 原语句 SELECT DATE_FORMAT(o.pay_time, '%Y-%m') AS pay_month, COUNT(*) AS order_cnt FROM mall.pay_order o WHERE o.pay_time >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) GROUP BY pay_month; -- 自动转换后的 PostgreSQL 版本 SELECT to_char(o.pay_time, 'YYYY-MM') AS pay_month, COUNT(*) AS order_cnt FROM mall.pay_order o WHERE o.pay_time >= date_trunc('month', CURRENT_DATE) - INTERVAL '6 months' GROUP BY pay_month;这类方言映射逻辑在前端按问题类型分发,各类场景的入口定义在 chat2db-community-client/src/constants/chat.ts 的QuestionType枚举里(NL_2_SQL、SQL_EXPLAIN、SQL_OPTIMIZER、SQL_2_SQL),翻一眼就能知道面板上每个按钮对应什么。
配置、模型管理相关的读写逻辑集中在 chat2db-community-client/src/service/aiModelConfig.ts,比如 Key 脱敏展示、默认配置排序都在这个文件里,排查配置不生效时先看它。
进阶与避坑:三个高频问题的处理
现象 1:生成的 SQL 语法能跑,但查出来的数不对。原因:没选表或描述太模糊,AI 只能靠猜列名,经常把pay_time猜成create_time。 处理:提问前把相关表勾上,并在描述里点名字段,例如"按pay_time过滤,不要用create_time"。
现象 2:点生成后请求一直转圈或直接报错。原因:多数是baseUrl少了/v1这类路径段,或者公司网络需要代理。 处理:先回设置页点"测试连接"定位是网络问题还是参数问题;网络问题的话在设置里配置代理,面板请求和流式输出都会走这条通道。
现象 3:同一个问题问三遍,答案啰嗦且风格漂移。原因:默认配置里 temperature 偏高,或你切到了另一个默认模型。 处理:在模型配置里复制一条新配置,把 temperature 调到 0.2 左右并设为默认,SQL 类任务的输出会明显更收敛。⚠️ 多套配置可以并存,按场景切换比反复改同一条省事。
从一句话出查询,到读、优化、迁移老 SQL,AI 面板基本覆盖了日常和数据打交道的全部路径。想深入看交互组件的实现,从 chat2db-community-client/src/blocks/AI/ 目录入手即可;产品层面的完整功能说明见 README_CN.md。
【免费下载链接】Chat2DBChat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.项目地址: https://gitcode.com/GitHub_Trending/ch/Chat2DB
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考