カテゴリーを見る

自然言語からSQLへ:Nova AIが質問をデータベースクエリに変換する方法

11分で読めます

AI搭載

ノヴァAI データベース

ノヴァAI ノヴァAI
クエリストリーム クエリストリーム
データベース データベース
テキストからSQLへ
10の言語方言
スキーマ検証済み

Nova AI by Query Streams Novaは、平易な英語の質問を、10種類のデータベースエンジンに対応した検証済みの方言固有のSQLクエリに変換します。「前四半期の地域別総売上高を表示してください」と入力すると、Novaは適切なJOIN、集計、日付関数、および特定のデータベース(PostgreSQL、MySQL、SQL Server、Oracle、Snowflake、BigQuery、またはサポートされている任意のエンジン)に対応した方言構文を含む正しいSQLを生成します。すべてのクエリは、実行前にスキーマ検出、列検証、結合パス追跡、構文検証の4段階の検証パイプラインを通過します。これが、本番環境に対応したテキストtoSQLシステムと、テーブル名を推測する汎用チャットボットとの違いです。以下に、Novaがますます複雑になる自然言語の質問を正確なSQLに変換する5つの実際の例を示します。 無料でお試しください クレジットカードは不要です。

自然言語がSQLになる方法
ご質問から検証済み結果までの5つのステップ
あなたの質問
「売上高上位10製品」
スキーマ検索
テーブル、列、外部キー
SQL生成
方言固有のクエリ
検証
構文チェックとスキーマチェック
結果
データグリッドまたはグラフ
1

シンプルなフィルター:WHERE句を平易な英語で表現する

最も一般的なテキストからSQLへの変換パターン。Novaは「from California」を正しい列と値にマッピングします。

ノヴァAI
ノヴァ
PostgreSQL — crm_prod
カリフォルニア州のアクティブな顧客をすべて表示する
ユーザー
ノヴァ
「アクティブ顧客」WHERE status = 'active'
「カリフォルニア出身」AND state = 'CA'
コピー 走る
セレクト 会社名、連絡先メールアドレス、都市、州、作成日時
フロム 一般のお客様
どこ ステータス 'active'
  アンド 状態 = 「CA」
ORDER BY 会社名
312行×5列 45ms
会社名
アルパインテックサンフランシスコカリフォルニア
ベイアナリティクスオークランドカリフォルニア
クラウドブリッジ株式会社サンノゼカリフォルニア
+ 309行追加 · 拡大する
見つかった 312人のアクティブユーザー カリフォルニアで。ノヴァは、 列プロファイリングから2文字の略語(「カリフォルニア」ではなく「CA」)を使用します。都市でフィルタリングしたり、エクスポートしたりしますか?
Novaにあなたのデータに関するあらゆる質問をしてみてください…
2

集計:「合計」と「別」はSUM + GROUP BYになります

Novaは、「合計」「平均」「件数」といった単語から集計の意図を認識し、「カテゴリ別」といった単語からグループ化の意図を認識します。

ノヴァAI
ノヴァ
MySQL — eコマース
製品カテゴリー別の総売上高(売上高の高い順)
ユーザー
ノヴァ
「総収入」合計(oi.quantity * oi.unit_price)
「製品カテゴリー別」p.カテゴリでグループ化
「最高値順に並べ替え」総収益の降順で並べ替え
コピー 走る
セレクト p.カテゴリ、
       合計(oi.数量 * oi.単価) AS 総収益、
       カウント(DISTINCT o.order_id) AS 注文数
フロム 製品 p
ジョイン 注文アイテム oi オン p.product_id = oi.product_id
ジョイン オーダー オン oi.order_id = o.order_id
GROUP BY p.カテゴリ
ORDER BY 総収益 DESC
8行×3列 92ms
カテゴリー総収益注文数
エレクトロニクス$1,284,52012,840
ソフトウェア$892,3408,920
サービス$654,1003,270
+ その他5つのカテゴリ · 拡大する
エレクトロニクス 12,840件の注文で128万ドルのリードを獲得。Novaは3つのテーブルに自動参加しました。 製品ID そして 注文ID 外部キー。棒グラフを表示したいですか?それとも特定のカテゴリを掘り下げたいですか?
Novaにあなたのデータに関するあらゆる質問をしてみてください…
3

日付範囲:「前四半期」から方言固有の日付関数まで

自然言語による日付表現は、使用するデータベースエンジンによって異なるSQLにマッピングされます。Novaはこれを自動的に処理します。

ノヴァAI
ノヴァ
SQL Server — finance_db
前四半期の月間請求総額
ユーザー
ノヴァ
SQL Serverの方言が検出されました — DATEPART、DATEADD、TOP構文を使用しています
コピー 走る
セレクト
  日付パート(月、請求書発行日) AS 請求書の月、
  日付名(月、請求書発行日) AS 月名、
  合計(合計金額) AS 月間合計、
  カウント(*) AS 請求書数
フロム dbo.invoices
どこ invoice_date >= 日付追加(四半期、 日付が異なる(四半期、 0, GETDATE()) - 1, 0)
  アンド 請求書日付 < 日付追加(四半期、 日付が異なる(四半期、 0, GETDATE()), 0)
GROUP BY 日付パート(月、請求書発行日)
         日付名(月、請求書発行日)
ORDER BY 請求書の月
3行×4列 38ms
月名月間合計請求書数請求書の月
1月$148,3202341
2月$162,8902512
行進$157,4402483
2月は最も高い評価を受けており、 $162,890. 注: これは SQLサーバーノヴァは 日付パート そして 日付追加 PostgreSQLの代わりに 日付_切り取り線同じ質問をPostgresで行うと、異なるが同等のSQLが生成されます。
Novaにあなたのデータに関するあらゆる質問をしてみてください…
4

複雑なクエリ:サブクエリとウィンドウ関数を1つの文で表現する

高度な問題では、CTE、サブクエリ、ウィンドウ関数などを使用した多段階のSQLが生成されます。SQLの知識は必要ありません。

ノヴァAI
ノヴァ
Snowflake — アナリティクス_wh
今年平均以上の金額を支出した顧客を、総支出額順にランキングしたもの
ユーザー
ノヴァ
「平均以上」HAVING total_spend > (サブクエリ)
"今年"YEAR(order_date) = 2026 の場合
「総支出額順」合計支出額の降順で並べ替え
コピー 走る セーブ
 顧客合計 AS (
  セレクト c.顧客ID、c.会社名、
         合計(o.合計金額) AS 合計支出額
  フロム 分析。顧客 c
  ジョイン 分析。注文 オン 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行×3列 210ms
会社名合計支出額支出ランク
グローバルテックソリューションズ$428,9001
メリディアン社$312,4502
エイペックス・マニュファクチャリング$289,1003
+ 44行追加 · 拡大する
顧客数47人 平均支出額24,680ドルを超えました。NovaはCTEを使用して ランク() ウィンドウ関数とサブクエリフィルタ。Snowflake固有の大文字スキーマ参照(アナリティクス・カスタマー倉庫名と一致させてください。
Novaにあなたのデータに関するあらゆる質問をしてみてください…
5

曖昧な質問:ノヴァは推測する前に質問する

質問が複数のテーブルや列に該当する可能性がある場合、Novaは誤った情報を流すのではなく、説明を求めます。

ノヴァAI
ノヴァ
PostgreSQL — マルチテナント
すべてのユーザーを表示する
ユーザー
ノヴァ
私は見つけた テーブル3つ 「ユーザー」に一致する可能性のあるもの:
1認証ユーザー — 1,240行(メールアドレス、最終ログイン日時、役割を含むログインアカウント)
2public.app_users — 8,920行(アプリプロファイル、名前、プラン、組織IDを含む)
3レガシーユーザーアカウント — 450行(非推奨、auth.usersに移行済み)
どのテーブルのことですか?それとも参加すべきでしょうか? 認証ユーザーアプリユーザー 全体像を把握するには?
auth.usersとapp_usersを結合する
ユーザー
ノヴァ
1,240行×5列 67ms
電子メールフルネームプラン
[email protected]ジェームズ・チェンエンタープライズ
[email protected]サラ・パークプロ
[email protected]マイク・トーレスプロ
+ 1,237行追加 · 拡大する
参加方法 auth.users.id = app_users.auth_user_id。 全て 1,240アカウント ログイン情報とプロフィールデータが結合された状態で返されました。
Novaにあなたのデータに関するあらゆる質問をしてみてください…

これらの例が示す自然言語からSQLへの変換について

上記の各デモは、Nova が自動的に処理するさまざまな NL-to-SQL 変換パターンを示しています。デモ 1 は最も単純なケースを示しています。フィルタ フレーズ ("from California") を WHERE 句にマッピングします。これが簡単ではないのは、Nova が次のことを検出したからです。 列は、完全な州名ではなく、2文字の略語を使用します。これは、スキーマ検出中の列プロファイリングから学習した詳細です。単純なテキストからSQLへの変換システムでは、 WHERE state = 'California' そして、結果がゼロ件返されます。

デモ2では集計処理へとスケールアップします。「合計」、「平均」、「件数」といった単語は、それぞれSUM、AVG、COUNT関数をトリガーします。「カテゴリ別」というフレーズはGROUP BYに、「高位順」はORDER BY DESCにマッピングされます。Novaはまた、この質問に答えるにはproducts、order_items、ordersの3つのテーブルを結合する必要があることを自動的に検出し、スキーマ内の外部キー関係をトレースすることでそれを実現しました。これは、英語で説明するには30秒しかかからないクエリですが、特に馴染みのないテーブル構造の場合、SQLで正しく記述するには数分かかるようなクエリです。

デモ3では、方言の認識が強調されています。「last quarter」というフレーズは、データベースエンジンによってまったく異なる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は、すべてのクエリがデータベースに到達する前に実行される4段階の検証パイプラインでこの問題を解決します。まず、実際のスキーマ(すべてのテーブル、列、データ型、外部キー関係)を検出します。次に、列の値をプロファイリングして、次のようなことを理解します。 「CA」または「カリフォルニア」を使用するかどうか ステータス 0/1 または「アクティブ」/「非アクティブ」を使用し、実際の列挙値が何であるかを確認します。3つ目は、列名の類似性を推測するのではなく、実際の外部キーを使用して結合パスをトレースします。4つ目は、sqlglot による構文解析と rapidfuzz を使用した 60% のしきい値での列あいまいマッチングにより、最終的な SQL を検証します。参照されている列が存在しない場合、またはスペルミスがある場合、Nova は実行前にそれを検知し、自動的に修正するか、明確化を求めます。

テキストからSQLへの変換でサポートされているデータベース

Novaの自然言語からSQLへのエンジンは、PostgreSQL、MySQL、SQL Server(Microsoft)、MariaDB、SQLite、Oracle、Snowflake、Google BigQuery、DuckDB、Microsoft Accessの10種類のデータベースプラットフォームをサポートしています。また、Stripe、Shopify、HubSpot、Google Analytics 4、Google Search Console、ShipStationの6つのAPIコネクタもサポートしており、これらのデータを標準SQLでクエリ可能なローカルのDuckDBテーブルに同期します。各データベースには、日付、文字列関数、識別子、ページネーション、NULL処理の構文が異なる独自のSQL方言があります。Novaは接続されたデータソースに基づいて適切な方言を自動的に生成するため、SQL方言について考える必要はありません。 リミットトップバッククォート引用と角括弧引用の違い、または NVL合体する会話の途中でデータベースを切り替えることも可能で、Novaはそれに応じてSQL出力を調整します。

よくある質問

SQLにとって自然言語とは何ですか?
自然言語からSQLへの変換(NL-to-SQLまたはtext-to-SQL)とは、平易な英語の質問を構造化されたSQLデータベースクエリに変換するプロセスです。AIモデルは質問の意図を解析し、データベーススキーマにマッピングして、SELECT、WHERE、JOIN、GROUP BY、ORDER BY句を含む正しいSQL構文を生成します。Novaはさらに、実行前にすべてのクエリを実際のスキーマに対して検証することで、このプロセスを強化しています。
AIが生成するSQLの精度はどの程度ですか?
精度は、AIが実際のデータベーススキーマにアクセスできるかどうかに完全に依存します。ChatGPTのような汎用チャットボットはテーブル名を推測し、存在しない列を誤って作成することがよくあります。Nova AIは、クエリがデータベースに到達する前に、4段階のパイプラインを通じて、実際のテーブル名、列の型、データ値、外部キー関係に対してすべてのクエリを検証します。
AIは、JOINやサブクエリを含む複雑なSQLを処理できますか?
はい。Novaは、スキーマ内の外部キー関係、分析クエリ用のCTE(共通テーブル式)、RANK()やROW_NUMBER()などのウィンドウ関数、比較フィルタリング用のネストされたサブクエリをトレースすることで、複数テーブル結合を生成します。たった1つの自然言語の文で、複数の結合と集計を含む15行のSQLクエリを生成できます。
AIは私のデータベース構造を認識していますか?
はい。Novaは、お客様のネットワーク上で動作する軽量サービスであるQuery Streams Agentを介してデータベースに接続します。このAgentは、テーブル名、列の型、外部キー制約、データプロファイルなど、お客様の実際のスキーマを読み取ります。Novaはこのメタデータを使用して、正確なクエリを生成します。お客様の実際のデータはネットワークから外部に送信されることはありません。AIと共有されるのはスキーマのメタデータのみです。
自然言語によるクエリをサポートするデータベースはどれですか?
Novaは、PostgreSQL、MySQL、SQL Server、MariaDB、SQLite、Oracle、Snowflake、BigQuery、DuckDB、Microsoft Accessの10種類のデータベースをサポートしています。また、Stripe、Shopify、HubSpot、Google Analytics 4、Google Search Console、ShipStationの6つのAPIプラットフォームのデータをローカルのDuckDBテーブルに同期することで、これらのプラットフォームへのクエリを実行します。SQL方言は各エンジンに合わせて自動的に調整されます。
Novaが生成するSQLを編集することはできますか?
はい。生成されたクエリはすべて、完全な構文ハイライト表示と、コピー、実行、保存、展開のためのインタラクティブなボタン付きで表示されます。実行前にSQLを修正したり、修正したクエリを再実行したり、クエリライブラリに保存してMicrosoft Excel、Googleスプレッドシート、またはWebポータルで繰り返し使用したりできます。保存されたクエリは、SQLの知識がなくてもチームが実行できる再利用可能な資産となります。

自然言語データベースクエリ入門

Novaで自然言語からSQLへの変換を設定するのは5分もかかりません。無料アカウントは以下から作成できます。 my.querystreams.comデータベースにアクセスできる任意のマシンにQuery Streams Agentをインストールし、データソースを追加して、クエリの実行を開始するだけです。このエージェントは暗号化された送信専用接続を作成するため、ファイアウォールの変更、VPNトンネル、受信ポートの設定は不要です。Windows、macOS、Linuxで動作し、自動的にアップデートされ、複数のデータベースへの同時接続をサポートします。

AIクレジットは以下から入手できます 月額購読または一括購入Novaは高度なAIを搭載しており、クエリストリームは各クエリに最適なプロバイダーを自動的に選択して最良の結果を提供します。Novaが生成するクエリはクエリライブラリに保存して、チームメイトと共有できます。 Microsoft Excelアドイン または Google Sheetsアドオン — 相手側にはSQLの知識は必要ありません。Novaのすべての機能の詳細については、 BIおよびAIデータ分析機能ページ.

メタディスクリプション: 自然言語からSQLへ ― 平易な英語で質問を入力するだけで、PostgreSQL、MySQL、SQL Server、Snowflake、その他6つのデータベースに対応した、検証済みのSQL文が生成されます。実際の例を5つご覧ください。

カテゴリー: ノヴァAI
タグ: 自然言語からSQL、テキストからSQL、AI SQLジェネレーター、NLからSQL、AIデータベースクエリ、Nova AI、クエリストリーム、PostgreSQL、MySQL、SQL Server、Snowflake、BigQuery、AIクエリビルダー、自然言語データベースクエリ、テキストからSQLコンバーター

著者略歴:
クエリストリームチームは、経験豊富なデータベース専門家、ネットワークセキュリティの専門家、そしてエンタープライズネットワークのベテランで構成されており、データ管理、分析、安全なソフトウェア開発において合計25年以上の経験を有しています。

更新日 2026 年 6 月 3 日