SQL ステートメントをフォーマットして整形する
SQL フォーマットは可読性と保守性を向上させます。インデントの規則、キーワードの整列、複雑なクエリの一貫したスタイルを学びましょう。
- 1
SQL フォーマットの規約:(1) キーワードは大文字(SELECT、FROM、WHERE)。(2) 主要句はそれぞれ改行(SELECT、FROM、JOIN、WHERE、GROUP BY、HAVING、ORDER BY)。(3) 列は SELECT の下にインデント。(4) 結合条件は整列。(5) サブクエリはインデント。(6) カンマ先行またはカンマ後続のスタイルを一貫して使用。(7) 長い IN リストは折り返す。一貫したフォーマットにより、SQL は読みやすく、レビューしやすく、デバッグしやすくなります。
- 2 SQL フォーマッター →
標準規約で SQL クエリをフォーマットします。未フォーマットの SQL を貼り付けると、適切にインデントされキーワードが整列した出力が得られます。フォーマッタはサブクエリ、CTE、ウィンドウ関数、CASE 式を処理します。コードレビューとコミットの前に使ってください。
- 3 sql-format → word-count
SQL フォーマットワークフローを使って、SQL クエリのフォーマット、検証、ドキュメント化を行います。一貫したスタイルのきれいな SQL が生成され、構文エラーを捕捉し、複雑なロジックを説明するコメントを追加できます。
- 4
チームの規約:フォーマットスタイル(sqlfluff、SQLFormat、pg_format など)について合意し、CI/CD で強制してください。pre-commit フックで SQL ファイルを自動フォーマットできます。ORM 生成の SQL には、クエリログを有効にして出力をフォーマットするとデバッグしやすくなります。チーム全体で一貫したフォーマットはレビューの摩擦を減らし、差分をきれいにします。
よくある質問
- SQL キーワードは大文字と小文字のどちらにすべきですか?
- スタイルの選択です。大文字のキーワード(SELECT、FROM)は伝統的で、識別子との区別に役立ちます。小文字は一部のフレームワーク(Django ORM)で一般的です。重要なのは一貫性です。1 つ選んで強制してください。ほとんどの SQL フォーマッタのデフォルトは大文字です。
- 非常に長いクエリはどうフォーマットしますか?
- 長い SELECT リストは 1 列 1 行に分割します。長い IN リスト(5 個超)は複数行に折り返します。複雑なクエリは CTE で名前付きステップに分割します。自明でないロジックにはコメントを付けます。100 行を超えるクエリは、ビューやストアドプロシージャへのリファクタリングを検討してください。