コンテンツにスキップ

02.SQL コーディング規約

このドキュメントでは、SQL(Structured Query Language)を記述する際のスタイルと規約を定めます。 可読性と保守性の高いクエリ記述を目指します。

共通原則との関係

本規約は、01.共通コーディング原則の思想を、SQLに特化・具体化したものです。必ず共通原則にも目を通してください。


1. 基本方針

  • キーワードは常に大文字:
    • SELECT, FROM, WHERE, GROUP BY, JOIN などのSQL予約語は、必ず大文字で記述します。
  • データ型も大文字:
    • VARCHAR, INTEGER, TIMESTAMP などのデータ型も大文字で記述します。
  • 関数名も大文字:
    • COUNT(), SUM(), NOW() などの組み込み関数名も大文字で記述します。

なぜ大文字か?

SQLの予約語や関数を大文字に統一することで、テーブル名やカラム名といった、私たちが定義した「識別子」との区別が明確になり、クエリの構造が格段に読みやすくなります。


2. フォーマットとインデント

  • インデント:
    • JOIN句やサブクエリなど、階層が深くなる場合は、半角スペース2つまたは4つでインデントします。(プロジェクト内で統一)
  • 主要な句は改行:
    • SELECT, FROM, WHERE, GROUP BY, ORDER BY などの主要な句は、それぞれ新しい行から書き始めます。
  • カンマの位置:
    • SELECT句のカラムリストなどは、カンマを要素の前に置く「リーディングカンマ」スタイルを推奨します。これにより、コメントアウトや項目の追加・削除が容易になります。

良い例 (リーディングカンマ):

SELECT
    u.id
  , u.name
  , COUNT(p.id) AS post_count
FROM
    users AS u
LEFT JOIN
    posts AS p ON u.id = p.user_id
WHERE
    u.is_active = TRUE
GROUP BY
    u.id
  , u.name
ORDER BY
    post_count DESC;


3. 命名規則

この命名規則は、02.設計仕様/02.データ仕様/01.データモデル設計書で定義されるルールと一致させます。

  • テーブル名:
    • 小文字のスネークケース (snake_case) を使用します。
    • テーブルが表すエンティティの複数形とします。(例: users, posts, order_items
  • カラム名:
    • 小文字のスネークケース (snake_case) を使用します。
    • id や、外部キーを示す user_id のような、明確で一貫性のある名前を付けます。
  • エイリアス (別名):
    • テーブルやカラムにエイリアスを付ける場合は、ASキーワードを明記することを推奨します。
    • エイリアス名は、元の名前の頭文字など、短く分かりやすいものにします。(例: users AS u

4. その他

  • JOINの明示:
    • JOINを記述する際は、INNER JOIN, LEFT JOIN のように、結合の種類を常に明示します。単にJOINと書くのは避けてください。
  • ワイルドカード (*) の不使用:
    • SELECT * は、意図しないカラムの取得やパフォーマンス低下の原因となるため、原則として使用を禁止します。
    • 必ず、取得したいカラム名を全て明示的に記述してください。
  • コメント:
    • 複雑なクエリや、特定のロジックには、--(一行コメント)や /* ... */(複数行コメント)を使って、その意図を説明するコメントを記述します。