AIでSQLを書く方法|初心者向けに手順と注意点を解説
検索者の悩み
「データベースから必要な情報を取り出したいけれど、SQLの書き方がわからない」「SELECTやWHEREなどの意味を覚えるのが難しい」「ChatGPTなどのAIにSQLを書いてもらっても大丈夫?」と悩んでいる人も多いでしょう。
SQLとは、データベースに保存されている情報を検索、追加、更新、削除するときに使われる言語です。例えば顧客一覧から東京都の顧客だけを表示したり、商品別の売上を集計したりできます。
AIを使えば、「売上が高い商品を上位10件表示したい」と日本語で伝え、目的に合ったSQLのたたき台を作ってもらうことができます。
ただし、AIが作ったSQLが必ず正しいとは限りません。特にデータを更新・削除するSQLは、実行前の確認が非常に重要です。
先に結論
AIでSQLを書くなら、「やりたいことを決める → テーブル名と列名を伝える → 使用しているデータベースを伝える → SQLを作ってもらう → SQLの意味を説明してもらう → 安全な環境で実行する」という順番がおすすめです。
例えば、「顧客テーブルcustomersがあります。列はid、name、prefectureです。東京都の顧客だけを表示するPostgreSQL用のSQLを書いてください」と依頼します。
このようにテーブル構造や条件を具体的に伝えるほど、目的に合ったSQLを生成しやすくなります。OpenAIも、AIへの指示では目的や必要な情報を明確かつ具体的に伝えることを推奨しています。
超簡単な説明
SQLを使った作業は、巨大な表を見ている店員に条件を伝えるようなものです。
例えば、「売上表の中から2026年8月の商品Aだけ見せてください」と条件を伝えます。
SQLでは、その条件をSELECTやWHEREなどの命令に変換します。
SELECTは、データベースからどの情報を取り出すか指定する命令です。WHEREは、どの条件に一致するデータを対象にするか指定します。
PostgreSQLの公式ドキュメントでも、SELECTはテーブルやビューから行を取得するためのSQLとして説明されています。
AIは、日本語で書いた目的をこうしたSQLへ変換する助手として使えます。
AIでSQLを書く手順
1.何を調べたいのか決める
最初に、SQLを使って何をしたいのかを明確にします。
例えば、「今月の商品別売上を調べたい」「顧客数を都道府県別に集計したい」「売上上位10商品を表示したい」などです。
目的が曖昧なまま「SQLを書いて」と頼むと、AIも適切な条件を判断できません。
2.テーブル名と列名を伝える
次に、データベースの構造をAIへ伝えます。
例えば、salesというテーブルがあり、sale_date、product_name、quantity、priceという列があるとします。
AIには、「salesテーブルがあります。列はsale_date、product_name、quantity、priceです」と説明します。
このようなテーブルの構造をスキーマと呼ぶことがあります。スキーマとは、どのテーブルにどの列があり、どのようなデータを保存しているかを表す設計情報です。
3.使用しているデータベースを伝える
SQLには複数の種類があります。
PostgreSQL、MySQL、Microsoft SQL Server、SQLiteなどでは、基本的なSQLは似ていますが、一部の関数や日付処理などの書き方が異なります。
そのため、「PostgreSQL用にしてください」「MySQLで動くSQLを書いてください」と指定しましょう。
AIが正しいSQLを書いていても、自分の環境とSQLの種類が違えばエラーになる場合があります。
4.条件を具体的に伝える
次に、欲しい結果を詳しく伝えます。
例えば、「2026年8月のデータだけ」「売上金額が高い順」「上位10商品」「商品ごとに合計する」という条件です。
AIへの依頼例は、「salesテーブルから2026年8月の商品別売上を計算し、売上金額が高い順に上位10商品を表示するPostgreSQL用SQLを書いてください」となります。
AIへの指示では、結果や形式などを具体的に示すことが有効とOpenAIも案内しています。
5.SQLの意味も説明してもらう
AIがSQLを出したら、そのままコピーするのではなく、「このSQLを初心者向けに1行ずつ説明してください」と質問します。
例えばSELECT、FROM、WHERE、GROUP BY、ORDER BYの役割を説明してもらいます。
GROUP BYは、同じ商品名や地域などをまとめて集計するときに使います。ORDER BYは、結果を売上の高い順や日付順などに並べるための指定です。
SQLの意味を理解しておけば、AIが間違ったSQLを書いた場合にも気付きやすくなります。
6.安全な環境で実行する
最後に、SQLをデータベースで実行します。
最初はデータを読み取るSELECT文から試すのがおすすめです。
UPDATEはデータの更新、DELETEはデータの削除を行う命令なので、本番環境で不用意に実行すると重要なデータを書き換えたり消したりする可能性があります。
実務では、テスト環境やバックアップを用意したうえで確認しましょう。
実例
例えば、ネットショップの売上データを分析するとします。
salesテーブルには、sale_date、product_name、quantity、priceという列があります。
AIには、「salesテーブルの商品別売上を集計したいです。商品ごとにquantityとpriceを掛けて売上金額を計算し、売上が高い順に表示するPostgreSQL用SQLを書いてください」と依頼します。
AIは、SELECT、SUM、GROUP BY、ORDER BYなどを組み合わせたSQLを提案できます。
その後、「SUMは何をしているのですか」「GROUP BYが必要な理由を説明してください」と追加で質問します。
さらに、「2026年8月だけに絞ってください」と依頼すれば、日付条件を追加したSQLへ修正できます。
このように、最初から完璧なSQLを頼むのではなく、基本形を作る → 内容を理解する → 条件を追加するという順番で進めると初心者でも扱いやすくなります。
失敗・注意点
よくある失敗は、テーブル名や列名を伝えずにSQLを書かせることです。
AIは実際のデータベース構造を見ることができなければ、存在しないテーブル名や列名を推測して作る場合があります。
また、使用しているデータベースの種類を伝えないことで、実行できないSQLが生成される場合もあります。
特に注意したいのがUPDATE、DELETE、DROPなどです。
DROPはテーブルなどを削除する命令です。AIが生成したSQLを意味を理解せずに実行すると、重要なデータを失う可能性があります。
さらに、会社のデータベース情報をAIへ入力するときは、個人情報や機密情報にも注意が必要です。
実際の顧客名、メールアドレス、パスワードなどを入力する必要がなければ、架空のデータや列名だけを使って質問する方が安全です。
FAQ
Q.SQL初心者でもAIを使えますか?
利用できます。むしろ初心者の場合は、SQLを書いてもらうだけでなく、「なぜこのSQLになるのか」「各行の意味を説明してください」と質問することで学習にも活用できます。
Q.日本語だけでSQLを作れますか?
作れます。「東京都の顧客だけ表示したい」「商品別売上を高い順に並べたい」など、日本語で目的を伝えてSQLへ変換してもらえます。
Q.AIが作ったSQLはそのまま実行しても大丈夫ですか?
必ず内容を確認してから実行しましょう。SELECTだけなら比較的確認しやすいですが、UPDATE、DELETE、DROPなどデータを変更するSQLでは特に注意が必要です。
Q.PostgreSQLとMySQLではSQLが違いますか?
基本的なSELECTやWHEREなどは似ていますが、日付関数、文字列関数、一部の構文などに違いがあります。
そのため、AIには使用しているデータベース名を伝えることが重要です。
Q.複雑なSQLもAIで書けますか?
JOIN、サブクエリ、集計、ウィンドウ関数などを含むSQLの作成も支援できます。
ただし、複雑になるほど間違いを見つけにくくなるため、小さなSQLに分けて確認しながら作る方法がおすすめです。
JOINとは、複数のテーブルを共通するIDなどで結び付けてデータを取得する仕組みです。
次にやること
まず練習用として、AIに「customersというテーブルがあります。列はid、name、prefectureです。東京都の顧客だけを表示するSQLを書き、初心者向けに1行ずつ説明してください」と入力してみましょう。
次に、「名前順に並べてください」「最初の10件だけ表示してください」と条件を追加します。
慣れてきたら、売上集計、複数テーブルのJOIN、月別集計などへ進みます。
AIでSQLを書くときに重要なのは、完成したSQLだけを受け取ることではありません。
目的を決める → テーブル構造を伝える → SQLを生成する → 内容を説明してもらう → 安全に実行する → 結果を確認するという流れを繰り返すことで、SQLを覚えながらAIを活用できるようになります。
関連URL
PostgreSQL公式ドキュメントでは、SELECTをはじめとするSQLの構文やデータ取得方法を確認できます。
https://www.postgresql.org/docs/current/sql-select.html
MySQL公式リファレンスマニュアルでは、MySQLで利用できるSELECTなどのSQL構文を確認できます。
https://dev.mysql.com/doc/refman/8.4/en/select.html
OpenAI「ChatGPT向けプロンプトエンジニアリングのベストプラクティス」では、SQL生成を依頼するときにも役立つ、具体的で明確な指示の作り方を確認できます。
https://help.openai.com/ja-jp/articles/10032626-prompt-engineering-best-practices-for-chatgpt
この記事へのコメントはありません。