prompt_templates/sql_generation/mysql_prompt.jinja (30 lines of code) (raw):
{# MySQL专用模板 #}
{% extends "base_prompt.jinja" %}
{% block optimization_rules %}
1. 采用覆盖索引策略(Covering Index),确保查询命中至少2个索引
2. 避免SELECT *,仅返回需求中的必要字段
3. 对日期字段使用CURDATE()函数时需标注时间范围
4. 多表关联必须使用INNER JOIN,禁止LEFT/RIGHT JOIN
5. 必须使用{{ limit_clause }}进行结果限制,防止数据泄露风险
6. 用户要求{{ limit }}条结果,禁止返回超过{{ limit }}条结果,添加LIMIT {{ limit }},若{{limit}}为空或者 0,则添加LIMIT 100
{% endblock %}
{% block validation_rules %}
1. 生成后自动检查表是否存在,若不存在则抛出错误
2. 条件字段值必须存在于目标表中,否则提示字段不存在
3. 自动生成EXPLAIN计划,确保type列显示为ref或eq_ref
{% endblock %}
{% block example_section %}
## 输出示例:
SELECT
`order_id` AS 订单编号,
`amount` * 1.05 AS 含税金额
FROM
`orders` o
INNER JOIN
`customers` c ON o.`customer_id` = c.`id`
WHERE
o.`status` = 'paid'
AND c.`region` = 'Asia'
AND o.`created_at` BETWEEN '2025-01-01' AND CURDATE()
LIMIT 100;
{% endblock %}