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 的批量生成