查看类别

自然语言到 SQL:Nova AI 如何将问题转化为数据库查询

阅读时间:11分钟

人工智能驱动

新星人工智能 您的数据库

新星人工智能 新星人工智能
查询流 查询流
您的数据库 您的数据库
文本转 SQL
10种方言
模式验证

Nova AI by Query Streams Nova 可以将简单的英语问题转换为经过验证的、针对特定语言方言的 SQL 查询,支持十种数据库引擎。例如,您可以输入“显示上季度各地区的总销售额”,Nova 会生成正确的 SQL 语句,其中包含正确的 JOIN 连接、聚合、日期函数以及适用于您特定数据库(PostgreSQL、MySQL、SQL Server、Oracle、Snowflake、BigQuery 或任何其他受支持的引擎)的方言语法。每个查询在执行前都会经过四阶段验证流程:模式发现、列验证、连接路径跟踪和语法验证。这正是 Nova 与只能猜测表名的通用聊天机器人之间的区别所在。以下五个真实示例展示了 Nova 如何将日益复杂的自然语言问题转换为准确的 SQL 语句。 免费试用 —无需信用卡。

自然语言如何转化为 SQL
从您的问题到验证结果的五个步骤
您的问题
“收入排名前十的产品”
模式查找
表、列、外键
SQL 生成
方言特定查询
验证
语法 + 模式检查
成果
数据网格或图表
1

简单筛选:将纯英语转换为 WHERE 子句

最常见的文本转 SQL 模式。Nova 将“来自加利福尼亚”映射到正确的列和值。

新星人工智能
诺瓦
PostgreSQL — crm_prod
显示所有来自加利福尼亚州的活跃客户
用户
诺瓦
“活跃客户”WHERE status = 'active'
“来自加利福尼亚”且州='CA'
复制 运行
选择 公司名称、联系邮箱、城市、州/省、创建时间
 公共客户
地点 状态 = 'active'
   状态 = 'CA'
ORDER BY 公司名称
312 行 x 5 列 45毫秒
公司名称城市状态
Alpine Tech旧金山加州
湾区分析奥克兰加州
CloudBridge公司圣何塞加州
还有 309 行 展开
成立 312 位活跃客户 在加利福尼亚州。Nova 检测到了这一点。 状态 使用来自列分析的双字母缩写(CA,而非“California”)。想要按城市筛选或导出此数据吗?
向Nova咨询任何关于您数据的问题……
2

聚合:“总计”和“按”变为 SUM + GROUP BY

Nova 能从“总计”、“平均值”、“计数”等词语中识别聚合意图,并从“按类别”中识别分组意图。

新星人工智能
诺瓦
MySQL — 电子商务
按产品类别划分的总收入,按收入从高到低排序
用户
诺瓦
“总收入”SUM(oi.quantity * oi.unit_price)
“按产品类别”按类别分组
“按最高分排序”按总收入降序排列
复制 运行
选择 p.类别,
       总计(oi.quantity * oi.unit_price) AS 总收入
       COUNT(区分 o.order_id) AS 订单数量
 产品 p
连接 订单项 oi 关于 p.product_id = oi.product_id
连接 订单 o 关于 oi.order_id = o.order_id
GROUP BY p.类别
ORDER BY 总收入 DESC
8 行 x 3 列 92毫秒
类别总收入订单数量
电子$1,284,52012,840
软件$892,3408,920
服务$654,1003,270
+ 5 个其他类别 · 展开
电子 领先者共获得 128 万美元,涉及 12,840 个订单。Nova 通过自动连接功能合并了 3 个表。 产品 ID订单ID 外键。想要柱状图还是想要深入查看特定类别?
向Nova咨询任何关于您数据的问题……
3

日期范围:“上个季度”到特定方言的日期功能

自然日期语言会根据您的数据库引擎映射到不同的 SQL 语句。Nova 会自动处理此过程。

新星人工智能
诺瓦
SQL Server — finance_db
上季度月度发票总额
用户
诺瓦
检测到 SQL Server 方言——使用 DATEPART、DATEADD、TOP 语法
复制 运行
选择
  日期部分(月份,发票日期) AS 发票月份
  日期名称(月份,发票日期) AS 月份名称,
  总计(总金额) AS 每月总计
  COUNT(*) AS 发票数量
 dbo.invoices
地点 发票日期 >= 日期添加(四分之一, DATEDIFF(四分之一, 0, 获取日期()) - 1, 0)
   发票日期 < 日期添加(四分之一, DATEDIFF(四分之一, 0, 获取日期()), 0)
GROUP BY 日期部分(月份,发票日期),
         日期名称(月份,发票日期)
ORDER BY 发票月份
3 行 x 4 列 38毫秒
月份名称月总计发票数量发票月份
一月$148,3202341
二月$162,8902512
行进$157,4402483
二月份的账单金额最高。 $162,890注:因为这是 SQL 服务器Nova 使用 日期部分日期添加 而不是 PostgreSQL 的 日期截断同样的问题在 Postgres 中会生成不同但等效的 SQL 语句。
向Nova咨询任何关于您数据的问题……
4

复杂查询:从一句话开始讲解子查询和窗口函数

高级问题会生成包含 CTE、子查询或窗口函数的多级 SQL——无需 SQL 知识。

新星人工智能
诺瓦
Snowflake — analytics_wh
今年消费额高于平均水平的顾客,按总消费额排名
用户
诺瓦
“高于平均水平”拥有 total_spend > (子查询)
“今年”WHERE YEAR(order_date) = 2026
按总消费额排名按总消费金额降序排列
复制 运行 节省
 客户总计 AS (
  选择 c.customer_id,c.company_name,
         总计(o.总金额) AS 总支出
   分析.客户 c
  连接 分析.订单 o 关于 c.customer_id = o.customer_id
  地点 (o.order_date) = 2026
  GROUP BY c.customer_id, c.company_name)
选择 公司名称、总支出、
       等级() 结束 (ORDER BY 总支出 DESC) AS 支出排名
 客户总计
地点 总支出 > (选择 AVG(总支出)  顾客总计)
ORDER BY 总支出 DESC
47 行 x 3 列 210毫秒
公司名称总支出支出排名
GlobalTech Solutions$428,9001
子午线公司$312,4502
Apex Manufacturing$289,1003
还有 44 行 展开
47 位顾客 超过平均支出 24,680 美元。Nova 使用了 CTE, 秩() 窗口函数和子查询过滤器。Snowflake 特有的大写模式引用(分析.客户与您的仓库命名保持一致。
向Nova咨询任何关于您数据的问题……
5

模棱两可的问题:诺瓦在猜测之前会先提问

当你的问题可能对应多个表或列时,Nova 会要求你澄清,而不是凭空臆想。

新星人工智能
诺瓦
PostgreSQL — 多租户
显示所有用户
用户
诺瓦
我发现 3张桌子 这可能与“用户”匹配:
1auth.users — 1,240 行(包含邮箱、上次登录时间和角色的登录帐户)
2public.app_users — 8,920 行(包含名称、计划和组织 ID 的应用配置文件)
3legacy.user_accounts — 450 行(已弃用,已迁移至 auth.users)
您指的是哪张表?或者我应该加入? auth.usersapp_users 想了解全貌?
将 auth.users 与 app_users 合并
用户
诺瓦
1240 行 x 5 列 67毫秒
电子邮件全名计划
[email protected]詹姆斯·陈企业版
[email protected]莎拉·帕克专业版
[email protected]迈克·托雷斯专业版
还有 1,237 行 展开
通过以下方式加入 auth.users.id = app_users.auth_user_id。 全部 1240个账户 返回了登录信息和个人资料的合并数据。
向Nova咨询任何关于您数据的问题……

这些例子展示了自然语言到 SQL 的转换

以上每个演示都展示了 Nova 自动处理的不同自然语言到 SQL 的转换模式。演示 1 展示了最简单的情况:将筛选短语(“来自加利福尼亚”)映射到 WHERE 子句。而使之变得不那么简单的是,Nova 检测到了…… 状态 该列使用双字母缩写,而非完整的州名——这是在模式发现过程中通过列分析了解到的细节。一个简单的文本转 SQL 系统会生成 条件为州 = '加利福尼亚州' 返回零结果。

演示 2 扩展到了聚合操作。诸如“总计”、“平均值”和“计数”之类的词语分别触发 SUM、AVG 和 COUNT 函数。“按类别”对应于 GROUP BY 子句,“按最高分排序”对应于 ORDER BY DESC 子句。Nova 还自动检测到,回答这个问题需要连接三个表——products、order_items 和 orders——它通过追踪模式中的外键关系实现了这一点。这种查询用英语描述只需 30 秒,但用 SQL 正确编写却需要几分钟,尤其是在不熟悉的表结构上。

演示 3 突出了方言感知功能。“上个季度”是一个日期概念,根据数据库引擎的不同,它会映射到完全不同的 SQL 语句。在 SQL Server 中,它会变成 DATEADD(QUARTER, DATEDIFF(QUARTER, 0, GETDATE()) - 1, 0)在 PostgreSQL 上,同样的意图会产生 date_trunc('quarter', current_date - interval '3 months')在 Snowflake 上,它使用 DATEADD('quarter', -1, DATE_TRUNC('quarter', CURRENT_DATE()))Nova 会根据您连接的数据库类型自动生成正确的变体。这种针对特定方言的生成方式,正是生产级文本转 SQL 工具与通用 AI 聊天机器人之间的区别所在。

演示 4 展示了 Nova 如何处理一个高级分析问题,该问题需要用到 CTE(公共表表达式)、用于计算平均值的子查询以及 RANK() 窗口函数——所有这些都由一个英文句子生成。演示 5 演示了当您的问题含糊不清时会发生什么:Nova 不会猜测并可能查询错误的表,而是会列出选项并让您选择。这一澄清步骤避免了 AI 生成的 SQL 中最常见的故障模式——生成错误的表名或列名,从而导致错误或不正确的结果。

为什么验证比生成更重要

从自然语言生成 SQL 只是难题的一半。更难的一半在于确保生成的 SQL 对你的特定数据库真正正确。像 ChatGPT 或 Claude 这样的通用 AI 模型可以编写看似合理的 SQL,但它们并不了解你实际的表名、列类型或列关系。它们只能猜测。而猜测往往会悄无声息地失败——查询可能运行,但会返回错误的结果,因为它连接了错误的列,或者筛选了一个使用了与预期不同值的列。

Nova 通过一个四阶段验证管道来解决这个问题,该管道会在每个查询到达数据库之前运行。首先,它会发现你的真实数据库模式——包括每个表、列、数据类型和外键关系。其次,它会分析列值,以了解诸如是否……之类的信息。 状态 使用“CA”或“California”,无论 状态 它使用 0/1 或“激活”/“非激活”表示枚举值的实际含义。第三,它使用真正的外键来追踪连接路径,而不是猜测列名相似度。第四,它通过 sqlglot 进行语法解析,并使用 rapidfuzz 进行列模糊匹配(阈值为 60%)来验证最终的 SQL 语句。如果引用的列不存在或拼写错误,Nova 会在执行前捕获到它,并自动纠正或提示您进行澄清。

文本转 SQL 支持的数据库

Nova 的自然语言到 SQL 引擎支持十个数据库平台:PostgreSQL、MySQL、SQL Server(Microsoft)、MariaDB、SQLite、Oracle、Snowflake、Google BigQuery、DuckDB 和 Microsoft Access。它还支持六个 API 连接器——Stripe、Shopify、HubSpot、Google Analytics 4、Google Search Console 和 ShipStation——通过将它们的数据同步到本地 DuckDB 表中,这些表可以使用标准 SQL 进行查询。每个数据库都有自己的 SQL 方言,在日期、字符串函数、标识符、分页和 NULL 值处理方面语法各不相同。Nova 会根据您连接的数据源自动生成正确的方言,因此您无需考虑这些方言。 限制 对比 顶部反引号引用与方括号引用的区别,或者 NVL 对比 合并您甚至可以在对话过程中切换数据库,Nova 会相应地调整其 SQL 输出。

常见问题

什么是自然语言与 SQL 的对应关系?
自然语言到 SQL(NL-to-SQL 或文本到 SQL)是将简单的英语问题转换为结构化的 SQL 数据库查询的过程。人工智能模型会解析您的问题意图,将其映射到您的数据库模式,并生成正确的 SQL 语法,包括 SELECT、WHERE、JOIN、GROUP BY 和 ORDER BY 子句。Nova 更进一步,会在执行查询之前,根据您的实际模式验证每个查询。
AI生成的SQL准确率如何?
准确性完全取决于人工智能是否能够访问您的真实数据库架构。像 ChatGPT 这样的通用聊天机器人会猜测表名,并且经常会臆造出并不存在的列。Nova AI 会在查询到达数据库之前,通过一个四阶段的验证流程,根据您实际的表名、列类型、数据值和外键关系来验证每个查询。
人工智能能否处理包含 JOIN 和子查询的复杂 SQL 语句?
是的。Nova 通过追踪模式中的外键关系生成多表 JOIN,使用 CTE(公共表表达式)进行分析查询,使用窗口函数(例如 RANK() 和 ROW_NUMBER()),以及使用嵌套子查询进行比较筛选。一条自然语言语句即可生成包含多个连接和聚合的 15 行 SQL 查询。
AI是否了解我的数据库结构?
是的。Nova 通过查询流代理(Query Streams Agent)连接到您的数据库,这是一个运行在您自身网络上的轻量级服务。该代理会读取您的真实数据库模式,包括每个表名、列类型、外键约束和数据配置文件。Nova 使用这些元数据来生成精确的查询。您的实际数据永远不会离开您的网络——只有数据库模式元数据会与 AI 共享。
哪些数据库支持自然语言查询?
Nova 支持 10 种数据库:PostgreSQL、MySQL、SQL Server、MariaDB、SQLite、Oracle、Snowflake、BigQuery、DuckDB 和 Microsoft Access。它还能通过将数据同步到本地 DuckDB 表,查询 6 个 API 平台(Stripe、Shopify、HubSpot、Google Analytics 4、Google Search Console 和 ShipStation)。每个数据库引擎都会自动匹配相应的 SQL 方言。
我可以编辑 Nova 生成的 SQL 语句吗?
是的。每个生成的查询都会以完整的语法高亮显示,并提供复制、运行、保存和展开等交互式按钮。您可以在运行 SQL 之前对其进行修改,重新运行修改后的查询,或将其保存到查询库中,以便在 Microsoft Excel、Google Sheets 或 Web 门户中重复使用。保存的查询将成为可重用的资源,您的团队无需具备 SQL 知识即可运行它们。

自然语言数据库查询入门

使用 Nova 设置自然语言到 SQL 的转换只需不到五分钟。立即创建一个免费帐户 my.querystreams.com在任何具有数据库访问权限的计算机上安装 Query Streams Agent,添加数据源,即可开始查询。该 Agent 会创建一个加密的仅出站连接——无需更改防火墙设置、VPN 隧道或入站端口。它可在 Windows、macOS 和 Linux 系统上运行,自动更新,并支持多个并发数据库连接。

人工智能积分可通过以下方式获得: 包月订阅或一次性购买Nova 由先进的 AI 提供支持——查询流会自动为每个查询选择最佳提供商,以提供最佳结果。Nova 生成的任何查询都可以保存到您的查询库中,并与团队成员共享,以便他们从查询库中运行该查询。 Microsoft Excel 加载项Google Sheets 插件 — 他们无需具备任何 SQL 知识。了解更多关于 Nova 所有功能的信息,请访问[此处]。 商业智能和人工智能数据分析功能页面.

元描述: 自然语言转 SQL——用纯英文输入问题,即可获得经过验证的、针对特定语言方言的 SQL 代码,支持 PostgreSQL、MySQL、SQL Server、Snowflake 以及其他 6 个数据库。查看 5 个真实示例。

类别: 新星人工智能
标签: 自然语言转 SQL、文本转 SQL、AI SQL 生成器、NL 转 SQL、AI 数据库查询、Nova AI、查询流、PostgreSQL、MySQL、SQL Server、Snowflake、BigQuery、AI 查询构建器、自然语言数据库查询、文本转 SQL 转换器

作者简介:
查询流团队由经验丰富的数据库专家、网络安全专业人士和企业网络资深人士组成,在数据管理、分析和安全软件开发领域拥有超过25年的综合经验。

更新 2026 年 6 月 3 日

Powered by BetterDocs