0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude CodeでSQLを自動生成する方法まとめ

0
Posted at

SQLを手で書くのが面倒だと感じたことはありませんか?
複雑なJOINや集計クエリになると、どこかでミスをしてしまったり、書くだけで時間を取られてしまったり。
「もっとスムーズにSQL書けたらいいのに…」と思っているエンジニアの方に向けて、この記事ではClaude Codeを使ってSQLを自動生成する方法をまとめています。
実際に使ってみると、日常の開発速度がかなり変わりますよ。


結論:Claude CodeはSQLを「自然言語で指示するだけ」で生成してくれる

SQLの自動生成で悩んでいませんか?

Claude Codeを使えば、「ユーザーテーブルから先月の登録者を取得したい」という自然な日本語の指示だけで、適切なSQLをすぐに生成できます。
しかも、テーブル定義を渡せばカラム名や型を考慮したクエリを書いてくれるので、手書きのミスや調べる手間が大幅に減ります。

Claude CodeでSQLを自動生成するメリット

メリット 内容
✅ 自然言語で指示できる 日本語でやりたいことを伝えるだけでOK
✅ テーブル定義を渡せる カラム名・型・制約を考慮したSQLを生成
✅ 複雑なクエリも対応 JOIN・サブクエリ・ウィンドウ関数なども自動化
✅ 修正・改善の対話ができる 生成後に「この条件を追加して」と追記可能
❌ 完璧ではない 実行前に必ず内容を確認することが大切

Claude CodeでSQL生成ができる理由

Claude Codeは、ターミナル上でAnthropicのAIであるClaudeを使えるCLIツールです。
コード生成・編集・解説が得意で、SQLのような構造化されたテキストとの相性は特に良いと私は感じています。

なぜSQLが得意かというと、SQLには明確な文法ルールがあり、「何をしたいか」が自然言語で表現しやすいからです。
「売上上位10件を取得」「30日以内に登録したユーザーを抽出」といった指示は、人間が読んでも意味がわかる文章なので、AIにとっても扱いやすいのです。
つまり、指示の精度=SQLの精度に直結しやすいツールだと思います。

エンジニアなら読むべき本を30冊以上紹介しています。
正直、私の仕事のやり方をガラッと変えた神本やSQLのチューニングに悩んだ時にめちゃくちゃ役に立ったもあります👇
→記事を読む


Claude CodeでSQLを自動生成する基本的な使い方

1. インストールと起動

まずClaude Codeをインストールします(Node.js 18以上が必要)。

npm install -g @anthropic-ai/claude-code
claude

起動後はターミナル上でClaude Codeとの対話が始まります。


2. シンプルなSELECT文を生成してもらう

まずは基本的な使い方から。

指示例:

usersテーブルから、created_atが過去30日以内のレコードをemail, created_atの順で取得するSQLを書いて

Claude Codeの出力例:

SELECT email, created_at
FROM users
WHERE created_at >= NOW() - INTERVAL '30 days'
ORDER BY created_at DESC;

✅ 日本語の指示だけで、きちんとした構文のSQLが生成されます。


3. テーブル定義を渡して精度を上げる

より精度の高いSQLを生成したいときは、テーブル定義(DDL)を一緒に渡すのがおすすめです。

指示例:

以下のテーブル定義をもとに、ordersテーブルとusersテーブルをJOINして、
過去1ヶ月の注文一覧を取得するSQLを書いてください。

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(255),
  created_at TIMESTAMP
);

CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id),
  amount DECIMAL(10,2),
  ordered_at TIMESTAMP
);

Claude Codeの出力例:

SELECT
  u.id AS user_id,
  u.name,
  u.email,
  o.id AS order_id,
  o.amount,
  o.ordered_at
FROM orders o
JOIN users u ON o.user_id = u.id
WHERE o.ordered_at >= NOW() - INTERVAL '1 month'
ORDER BY o.ordered_at DESC;

◎ テーブル定義を渡すことで、カラム名のタイポや型ミスを防ぎやすくなります。


4. 複雑なクエリ(集計・ウィンドウ関数)も対応できる

「難しいSQL」ほどClaude Codeが活きてきます。

指示例:

ordersテーブルで、ユーザーごとの累計注文金額をウィンドウ関数で計算するSQLを書いて

Claude Codeの出力例:

SELECT
  user_id,
  amount,
  ordered_at,
  SUM(amount) OVER (PARTITION BY user_id ORDER BY ordered_at) AS cumulative_amount
FROM orders
ORDER BY user_id, ordered_at;

✅ ウィンドウ関数のような「調べながら書くと時間がかかる」構文も、一発で生成してくれます。


Claude CodeでSQL生成の精度を上げるコツ

「なんとなく使えた」から「ちゃんと使える」になるために、精度を上げるポイントをまとめます。

コツ 内容 効果
◎ テーブル定義を渡す DDLをそのままコピペして渡す カラム名・型・制約を考慮
✅ 条件を具体的に書く 「最近」より「30日以内」と数値で書く 曖昧さをなくせる
✅ 出力カラムを指定する 「〇〇と〇〇のカラムを取得」と明示 SELECT * を避けられる
✅ 対話的に修正する 生成後「このカラムも追加して」と追記 段階的に精度を上げられる
❌ 指示が曖昧なまま生成 「いい感じのSQL書いて」 意図と違うSQLになりがち

私は最初、指示が抽象的なまま使っていたのですが、テーブル定義を渡すようにしてから出力の質が一気に上がったと感じています。


よくあるユースケース別:指示の書き方

用途によって指示のコツが少し変わります。

✅ データ抽出・レポート用SQL

salesテーブルから、2024年の月別売上合計をGROUP BYで集計するSQLを書いてください

✅ パフォーマンスチューニング相談

以下のSQLが遅いです。インデックスの追加提案も含めて改善案を教えてください。
[SQLをここに貼る]

✅ 既存SQLの解説

このSQLが何をしているか、わかりやすく日本語で説明してください。
[SQLをここに貼る]

✅ マイグレーション用DDLの生成

usersテーブルにlast_login_atというTIMESTAMP型のカラムを追加するALTER文を書いて

まとめ

  • Claude Codeは自然言語でSQLを生成できるCLIツール
  • テーブル定義を渡すと精度が大幅に向上する
  • 複雑なJOIN・集計・ウィンドウ関数も対応
  • 生成後の対話修正でさらに使いやすい
  • ❌ 生成物の確認は必ず自分で行うこと

SQLを手書きする時間を減らして、ロジックや設計に集中できる開発体験を、ぜひ試してみてください。

エンジニアなら読むべき本を30冊以上紹介しています。
正直、私の仕事のやり方をガラッと変えた神本やSQLのチューニングに悩んだ時にめちゃくちゃ役に立ったもあります👇
→記事を読む

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?