写 SQL 是数据分析人的日常,但说实话——大部分时间不是在写 SQL,是在查语法、调报错、对字段名。
-- 你写 SQL 时的真实状态:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ...
ERROR 1064: You have an error in your SQL syntax
-- 改了 20 分钟,终于跑通了...
-- 结果发现查的数据不对 😂
2025 年,这个痛苦可以结束了。AI 已经能精准理解自然语言并生成复杂 SQL,准确率在标准测试集上已经超过 85%。今天这篇文章,我帮你梳理了 5 种主流方法、10 个可直接复用的 Prompt 模板、3 个真实业务场景的完整演示。
方法 ①:直接用 ChatGPT / Kimi / 豆包(最简单)
适合所有人,零门槛。把表结构和需求用自然语言描述给 AI,直接生成 SQL。
💡 操作步骤:
① 告诉 AI 你的表结构(字段名、类型、含义)
② 用自然语言描述你要查什么
③ AI 生成 SQL → 复制到数据库执行
④ 如果报错,把错误信息贴回去让 AI 修
⚡ 优势:上手即用,不需要安装任何工具⚠️ 注意:表结构描述越详细,生成的 SQL 越准确
方法 ②:Cursor 编辑器(开发者首选)
AI 原生代码编辑器,直接连接数据库,边写边跑,实时反馈。
💡 操作步骤:
① 安装 Cursor(cursor.com),导入数据库连接
② 打开 .sql 文件,按 Cmd+K 打开 AI 对话
③ 描述需求,Cursor 自动读取表结构并生成 SQL
④ 内置数据库客户端,直接执行查看结果
⚡ 优势:自动读取表结构,不需要手动描述;支持多轮修改🏆 推荐指数:⭐⭐⭐⭐⭐
方法 ③:ChatExcel / 通义灵码(不会 SQL 也能用)
面向非技术人员,用中文描述需求即可,完全不需要懂 SQL 语法。
💡 推荐工具:
• ChatExcel(chatexcel.com):上传 Excel → 中文提问 → 自动生成查询
• 通义灵码(阿里出品):VS Code 插件,支持中文生成 SQL
• ChatGPT Code Interpreter:上传 CSV → 自然语言查询 → 返回结果
⚡ 优势:完全不需要懂 SQL,运营/产品/管理层也能用🎯 适合:偶尔需要查数据、不想学 SQL 的人
方法 ④:专用 Text-to-SQL 工具(企业级)
针对企业场景优化的专业工具,支持连接真实数据库、权限管理、查询审计。
💡 推荐工具:
• Chat2DB(开源):国产开源 AI 数据库客户端,支持 MySQL/PG/Oracle
• AI Query(aiquery.co):连接数据库后用英文提问,自动生成 SQL
• Text2SQL 开源方案:基于 Llama/DeepSeek 的私有化部署方案
⚡ 优势:数据不出企业,安全可控;支持团队共享🏢 适合:有数据安全要求的企业团队
方法 ⑤:编程调用 API(自动化批量生成)
通过代码调用 AI API,实现批量、自动化的 SQL 生成,适合集成到内部系统。
💡 实现思路:
① 用 Python 读取数据库元信息(表名、字段、类型)
② 构造 Prompt,包含表结构 + 用户问题
③ 调用 OpenAI / DeepSeek / 通义千问 API 生成 SQL
④ 可选:加一层校验(语法检查 + 执行限制)
⚡ 优势:可集成到 BI 平台、内部工具、机器人🔧 适合:有开发能力的技术团队
把 [方括号] 替换成你的实际信息,复制粘贴即可使用。
P1 条件查询"我的数据库有如下表结构:[粘贴 CREATE TABLE 语句]。请写一条 SQL:查询 [条件描述,如'2024年注册且消费金额大于1000元的用户'],返回 [需要的字段]。"
P2 多表关联"表结构如下:[粘贴建表语句]。请写一条 SQL,关联 [表A] 和 [表B],查询 [需求描述],要求使用 LEFT JOIN 并处理 NULL 值。"
P3 模糊搜索"表结构:[建表语句]。请写 SQL 查询 [字段名] 中包含 [关键词] 的记录,支持多关键词搜索(AND/OR 关系),并按相关度排序。"
P4 分组统计"表结构:[建表语句]。请写 SQL 统计 [按什么分组,如'每个月的订单总额和订单数量'],要求按时间排序,并计算环比增长率。"
P5 排名分析"表结构:[建表语句]。请写 SQL 查询 [需求,如'每个部门的销售额排名'],要求使用窗口函数 ROW_NUMBER(),并筛选出 TOP 10。"
P6 漏斗分析"表结构:[建表语句,包含用户行为日志]。请写 SQL 实现 [漏斗分析,如'注册→浏览→加购→下单→支付'各环节的转化率]。"
P7 留存分析"表结构:[建表语句,包含用户登录日志]。请写 SQL 计算用户留存率:[如'2024年1月注册用户在第2/3/7/30天的留存率']。"
P8 时间序列"表结构:[建表语句]。请写 SQL 查询 [需求,如'最近12个月的销售趋势,填充缺失月份为0'],要求使用 CTE 和 COALESCE。"
P9 递归查询"表结构:[建表语句,包含 parent_id 的树形结构]。请写 SQL 实现 [需求,如'查询某个分类及其所有子分类'],使用 WITH RECURSIVE。"
P10 SQL 优化"以下 SQL 执行很慢(耗时 [X] 秒),请帮我优化:[粘贴 SQL]。表结构:[建表语句]。要求:① 分析慢的原因 ② 给出优化方案 ③ 写出优化后的 SQL。"
P11 错误修复"以下 SQL 报错了:[粘贴 SQL 和错误信息]。请帮我:① 找出错误原因 ② 修复 SQL ③ 解释为什么出错 ④ 告诉我怎么避免。"
案例 1:电商运营 — 月度销售分析报告
📋 需求描述
运营小王需要一份月度销售报告,包含每月的订单数、总金额、客单价、环比增长率。
💬 发给 AI 的 Prompt
"我有一个 orders 表(order_id, user_id, total_amount, order_status, create_time)。请写一条 SQL,按月统计:① 每月订单总数 ② 每月销售总额 ③ 每月客单价(总额/订单数)④ 环比增长率。只统计已完成的订单(order_status=1),时间范围是最近 12 个月。"
🤖 AI 生成的 SQL
WITH monthly_stats AS (
SELECT
DATE_FORMAT(create_time, '%Y-%m') AS month,
COUNT(*) AS order_count,
SUM(total_amount) AS total_sales
FROM orders
WHERE order_status = 1
AND create_time >= DATE_SUB(NOW(), INTERVAL 12 MONTH)
GROUP BY DATE_FORMAT(create_time, '%Y-%m')
)
SELECT
month, order_count, total_sales,
ROUND(total_sales / order_count, 2) AS avg_order_amt,
ROUND((total_sales - LAG(total_sales) OVER (ORDER BY month))
/ LAG(total_sales) OVER (ORDER BY month) * 100, 2) AS growth_rate
FROM monthly_stats ORDER BY month;
案例 2:产品经理 — 用户行为漏斗分析
📋 需求描述
分析用户从"打开APP→浏览商品→加入购物车→提交订单→完成支付"的转化漏斗。
💬 发给 AI 的 Prompt
"我有一个 user_events 表(user_id, event_type, event_time),event_type 有 5 种值:app_open、view_product、add_cart、submit_order、pay_success。请写 SQL 分析这 5 个步骤的转化漏斗,计算每一步的用户数和相对上一步的转化率。"
🤖 AI 生成的 SQL
WITH funnel AS (
SELECT
COUNT(DISTINCT CASE WHEN event_type='app_open' THEN user_id END) AS step1_open,
COUNT(DISTINCT CASE WHEN event_type='view_product' THEN user_id END) AS step2_view,
COUNT(DISTINCT CASE WHEN event_type='add_cart' THEN user_id END) AS step3_cart,
COUNT(DISTINCT CASE WHEN event_type='submit_order' THEN user_id END) AS step4_order,
COUNT(DISTINCT CASE WHEN event_type='pay_success' THEN user_id END) AS step5_pay
FROM user_events
WHERE DATE(event_time) = CURDATE()
)
SELECT
step1_open, step2_view,
ROUND(step2_view/step1_open*100,1) AS open_to_view,
step3_cart, ROUND(step3_cart/step2_view*100,1) AS view_to_cart,
step4_order, ROUND(step4_order/step3_cart*100,1) AS cart_to_order,
step5_pay, ROUND(step5_pay/step4_order*100,1) AS order_to_pay
FROM funnel;
案例 3:数据分析师 — 用户留存 + 复购分析
📋 需求描述
分析 2024 年各月新用户的次日、7日、30日留存率,以及复购率。
💬 发给 AI 的 Prompt
"我有一个 orders 表(order_id, user_id, create_time, total_amount)。请写 SQL:① 找出每个用户的首次下单月份(视为注册月)② 计算每个注册月的新用户在次日、7日、30日的留存率 ③ 计算复购率(下过2单以上的用户占比)。"
💡 写在最后:AI 生成 SQL 不是让你不学 SQL,而是让你从"写语法"中解放出来,把精力放在"想清楚要查什么"上。毕竟,提出正确的问题比写出正确的 SQL 更有价值。AI 是你的 SQL 助手,但业务理解力和数据思维,才是你真正的核心竞争力。
— END —
夜雨聆风