【くえりびるだー】

クエリビルダー とは?

💡 メソッドをつなげるだけで、安全にSQLが組み上がる
📌 このページのポイント
クエリビルダー — メソッドチェーンでSQL組み立て query.select('*').from('users').where('age > 20').orderBy('name') .select('*') SELECT * .from() FROM users .where() WHERE age > 20 .orderBy() ORDER BY name SELECT * FROM users WHERE age > 20 ORDER BY name 各メソッドが自身を返す(return this)ので連鎖的に呼び出せる
クエリビルダーのメソッドチェーンによるSQL構築
ひよこ ひよこ

クエリビルダーって直接SQL書くのと何が違うの?

ペンギン先生 ペンギン先生

直接SQL文字列を組み立てると、ユーザー入力をうっかり混ぜてSQLインジェクションになりやすい。クエリビルダーはパラメータを自動でエスケープしてくれるから安全だよ

ひよこ ひよこ

ORMとは何が違うの?

ペンギン先生 ペンギン先生

ORMテーブルとクラスのマッピングまで面倒を見るけど、クエリビルダーはSQLの組み立てに特化してる。SQLの知識がそのまま使えるから、複雑なクエリでも思い通りに書きやすいんだ

ひよこ ひよこ

どんなときに便利なの?

ペンギン先生 ペンギン先生

検索機能みたいに条件が動的に変わる場面だね。if文で.where()を追加したり外したりできるから、条件の組み合わせが爆発しても対応しやすいよ

ひよこ ひよこ

おすすめのクエリビルダーってあるの?

ペンギン先生 ペンギン先生

Node.jsならKnex.js、PHPならLaravel Query Builder、JavaならjOOQが定番だね。jOOQはDBスキーマから型安全なコードを自動生成してくれて、コンパイル時にクエリの間違いを検出できるのが強力だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クエリビルダー」って出てきたら「コードでSQLを安全に組み立てるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Query Builder」 = クエリ構築器
💬 Query(問い合わせ)を Build(組み立てる)ツールという意味だよ
← 用語集にもどる