返回技能列表
AI技能coding
40 次阅读

自然语言 SQL 智能生成器

根据数据库 Schema 和自然语言问题,自动生成准确、优化的 SQL 查询语句,兼容多数据库方言,支持复杂查询场景。

AI

触发条件

当用户提问数据库相关问题并附 schema 时调用

## 技能概述

本技能能够将用户的自然语言问题自动转换为结构化查询语言(SQL),并结合提供的数据库 Schema 进行语义理解与查询优化。通过深度解析表结构、字段关系和数据类型,生成准确、高效且符合最佳实践的 SQL 语句,显著降低数据库查询的编写门槛。

## 核心能力

- **Schema 感知**:自动识别表名、字段名、主外键约束与索引信息,理解表间关联关系
- **多方言兼容**:支持 MySQL、PostgreSQL、SQL Server、Oracle、SQLite 等主流数据库语法
- **复杂查询处理**:覆盖多表 JOIN、子查询、聚合函数、窗口函数、CTE 等高级特性
- **智能优化建议**:根据数据特征生成索引友好的查询,避免全表扫描,提供执行计划参考
- **安全防护机制**:自动识别潜在 SQL 注入风险,建议使用参数化查询方式

## 调用步骤

1. **提供 Schema 信息**:以 `CREATE TABLE` 语句或结构化文本形式提交目标数据库的表结构,包括字段类型、主键、外键等关键元数据
2. **描述查询需求**:用自然语言清晰阐述希望获取的数据,例如"查询上个月各品类的销售额及同比增长率"
3. **指定数据库方言**(可选):明确目标数据库类型,以便生成符合特定方言语法的 SQL
4. **获取生成结果**:技能返回格式化 SQL 语句,并附带逻辑解释与性能优化建议
5. **迭代调整**:用户可基于执行反馈进一步修正查询条件或优化性能

## 使用示例

**输入 Schema:**

```sql
CREATE TABLE orders (id INT PRIMARY KEY, customer_id INT, amount DECIMAL(10,2), created_at DATETIME);
CREATE TABLE customers (id INT PRIMARY KEY, name VARCHAR(100), region VARCHAR(50));
```

**自然语言提问:** 统计 2024 年各区域客户的总消费金额,并按金额降序排列

**生成 SQL:**

```sql
SELECT c.region, SUM(o.amount) AS total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE YEAR(o.created_at) = 2024
GROUP BY c.region
ORDER BY total_spent DESC;
```

## 注意事项

- Schema 信息必须准确完整,缺失关键字段或约束会导致生成的 SQL 出现歧义或逻辑偏差
- 涉及业务规则的复杂问题,建议在描述中补充明确的过滤条件、时间范围与排序规则
- 生成结果仅供参考,生产环境部署前请人工审查并通过测试环境验证
- 大数据量查询应额外关注执行计划,必要时添加索引提示或重写查询逻辑
- 本技能仅限生成 DQL(数据查询语言),不支持 DDL 与 DML 的批量生成

评论 (0)

暂无评论,来说点什么吧