SQL整形
SQLクエリを見やすく整形・フォーマットします
SQLクエリを入力
整形オプション
インデントサイズ
キーワードの大文字/小文字
📖 SQLコーディング規約のベストプラクティス
• キーワードは大文字に統一すると可読性が向上します(SELECT, FROM, WHEREなど)
• テーブル名とカラム名は小文字にすると一貫性が保たれます
• インデントを適切に使うことで、ネストした構造が明確になります
• 長いクエリは改行して、1行が長すぎないようにします
• エイリアスは意味のある名前を付けて、クエリの意図を明確にします
💡 SQLの雑学・Tips
📜 SQLの誕生は1970年代
SQLは1970年代初頭にIBMのDonald D. ChamberlinとRaymond F. Boyceによって開発されました。当初は「SEQUEL(Structured English Query Language)」という名前でしたが、商標の問題で「SQL」に改名されました。読み方は「シークェル」と「エスキューエル」の両方が使われますが、公式には「エスキューエル」が正式な読み方とされています。
🔍 SELECT * は避けるべき?
SELECT * は便利ですが、本番環境では避けるべきとされています。理由は、必要のないカラムまで取得するため通信量が増え、パフォーマンスが低下するためです。また、テーブル構造が変更された際に予期しない動作を引き起こす可能性もあります。必要なカラムを明示的に指定することがベストプラクティスです。
⚡ インデックスの重要性
大規模なテーブルでは、適切なインデックスがあるかどうかでクエリ速度が数千倍変わることがあります。WHERE句やJOINで頻繁に使われるカラムにはインデックスを作成すると効果的です。ただし、インデックスが多すぎると更新処理が遅くなるため、バランスが重要です。
🚨 SQLインジェクション対策は必須
SQLクエリにユーザー入力を直接埋め込むと、SQLインジェクション攻撃のリスクがあります。必ずプリペアドステートメント(パラメータ化クエリ)を使用し、ユーザー入力をエスケープすることが重要です。これはOWASP Top 10にも含まれる重大な脆弱性です。
💾 NULLの扱いは特殊
SQLでは NULL は「値が存在しない」ことを表し、0や空文字列とは異なります。column = NULL は常にFALSEになるため、IS NULL や IS NOT NULL を使う必要があります。また、NULL同士の比較も特殊な動作をするため注意が必要です。
🔢 HAVING vs WHERE の違い
WHERE は集計前のフィルタリング、HAVING は集計後のフィルタリングに使います。例えば、「注文数が10以上のユーザー」を抽出する場合は HAVING COUNT(orders) >= 10 を使います。WHEREでは集計関数(COUNT、SUMなど)が使えないため、この使い分けが重要です。