この記事に関連するツール
ブラウザ上ですぐに試せます。記事の内容を確認しながら使うと、作業の流れをつかみやすくなります。

SQL、たまに書くと必ずエラーになる説
「SELECTしてWHEREで絞り込むくらいならイケるんですけど、INNER JOINとか出てくると頭が真っ白になります…」
最近、チームの若手メンバーから打ち明けられた悩みです。でもこれ、めちゃくちゃ分かります。
今のWeb開発ってORM(RailsのActiveRecordとか、Prismaとか)が優秀すぎるので、普段の業務でゴリゴリの「生SQL」を書く機会って意外と少ないんですよね。
でも、いざ「全ユーザーの今月の売上データを、退会済みユーザーを除外してログテーブルと結合して抽出して!」みたいな生々しいデータ分析を頼まれると、結局SQLを書かないといけない。
とりあえずカンで書いて実行すると Syntax error near 'LEFT JOIN' とか冷たいエラーが返ってきて、「カンマが一個多かった…」「シングルクォート開いたままだった…」としょうもないタイポで時間を溶かすんです。つらい。
タイポレス、ノーコードでクエリを組み立てる体験を
「SQLの文法(Syntax)の呪いから解放されて、データ同士をどう繋ぐか(Logic)だけに集中できるツールがあればいいのでは?」
その思いつきから、ポチポチとクリックするだけで複雑なSQLが組み上がるビジュアルビルダーを作り始めました。
開発中にどうしても譲れなかったのが、**「操作した瞬間に、右側のSQLがバンッ!と書き換わる」**という気持ちよさです。
プルダウンで LEFT JOIN を選んだ瞬間、リアルタイムで FROM 句の下にインデント付きの綺麗なコードが挿入される。これを見ているだけで、「ああ、こうやって繋げば良かったのか」というフィードバックループが超高速で回るんです。
正直、これを作ったことで一番助かっているのは僕自身かもしれません(笑)。
「SQLって怖い、難しい」と感じている初学者の人が、このツールをカチャカチャいじりながら「なんだ、テーブルとテーブルを接着剤でくっつけるだけじゃん」と気づいてくれたら、作者としてこんなに嬉しいことはありません。
具体的に防ぎたかったミス
よくあるのは、JOIN の条件を WHERE に混ぜてしまい、あとから読んだときに結合条件と絞り込み条件の境目が分からなくなるケースです。
SELECT users.name, orders.total
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE orders.created_at >= '2026-05-01';
このクエリでは、退会済みユーザーを除外したいのか、注文がないユーザーも残したいのかで LEFT JOIN の意味が変わります。ビジュアルビルダーでテーブル、結合キー、WHERE条件を分けて操作できると、「結合の設計」と「抽出条件」を別々に確認できます。レビュー時にも、生成されたSQLをSQL整形ツールに通してから共有すると、意図のズレを説明しやすくなります。
「書けない」より「読めない」を減らしたかった
作りながら気づいたのは、初学者がつまずくのは「SQLを書けない」こと以上に「自分が書いたSQLを読み返せない」ことだ、という点でした。カンで書いて、たまたま動いて、でもなぜ動いているのか説明できない——この状態がいちばん怖い。
だからこのビルダーは、ただSQLを吐くだけでなく「どのテーブルを起点に、どのキーで、どう絞ったか」が操作の流れとして残るようにしました。出てきたSQLを整形ツールに通して眺めれば、「ああ、自分はこういうクエリを組んだのか」と後から読める。書けるようになる前に、まず読めるようになる。その入口になればと思っています。
よくある質問
SQL初心者でも使えますか?
むしろ初心者にこそ向いています。プルダウンでテーブルや結合キーを選ぶと、右側に対応するSQLがリアルタイムで表示されます。動く例を見ながら「JOINってこう書くのか」と手を動かして覚えられるので、文法書を読むより腹落ちが早いはずです。
INNER JOIN と LEFT JOIN の違いがいつも分かりません。
両方のテーブルに存在する行だけ欲しいなら INNER JOIN、左のテーブルを必ず残したいなら LEFT JOIN です。ただし LEFT JOIN した右テーブルの列を WHERE で絞ると、結局 INNER JOIN と同じ結果になってしまう罠があるので、そこだけ注意してください。
生成したSQLはそのまま本番で使えますか?
標準的な SELECT を生成します。実行前に整形ツールで見直し、テーブル名や条件を確認すると安全です。データベース方言に固有の関数や構文が必要なときは、生成後に手で足してください。
入力したテーブル名や条件は外部に送信されますか?
いいえ。SQLの組み立てはすべてブラウザ内で完結します。本番のテーブル名やカラム名を入れても、外部のサーバーに送られることはありません。