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 *
は、意図しないカラムの取得やパフォーマンス低下の原因となるため、原則として使用を禁止します。- 必ず、取得したいカラム名を全て明示的に記述してください。
- コメント:
- 複雑なクエリや、特定のロジックには、
--
(一行コメント)や/* ... */
(複数行コメント)を使って、その意図を説明するコメントを記述します。
- 複雑なクエリや、特定のロジックには、