SQLのコーディング規約というものをあまり見かけないので、サンプルを作成することにしました。
これを参考に、各プロジェクトやサービス開発などでアレンジして活用していただけると幸いです。
規約
予約語で改行、予約語以外はインデント
-- ×悪い例
SELECT col_1 FROM tbl_a WHERE col2 = 'test'
;
-- 〇良い例
SELECT
col_1
FROM
tbl_a
WHERE
col2 = 'test'
;
予約語は大文字、列名やテーブル名は小文字で表記
-- ×悪い例(全部小文字)
select
col_1
from
tbl_a
where
col2 = 'test'
;
-- 〇良い例
SELECT
col_1
FROM
tbl_a
WHERE
col2 = 'test'
;
改行前後のカンマと演算子は、次の行の先頭に記載
-- ×悪い例
SELECT
col_1,
col_2
FROM
tbl_a
WHERE
col2 = 'test'
;
-- 〇良い例
SELECT
col_1
, col_2
FROM
tbl_a
WHERE
col2 = 'test'
;
文末のセミコロンは単独行に置く
-- ×悪い例
SELECT
col_1
, col_2
FROM
tbl_a
WHERE
col2 = 'test';
-- 〇良い例
SELECT
col_1
, col_2
FROM
tbl_a
WHERE
col2 = 'test'
;
カンマの後と演算子の前後には、半角スペースを入れる
-- ×悪い例
SELECT
col_1
,col_2
,col_3+col_4
FROM
tbl_a
WHERE
col2 = 'test'
;
-- 〇良い例
SELECT
col_1
, col_2
, col_3 + col_4
FROM
tbl_a
WHERE
col2 = 'test'
;
order by の指定に列番号を使わない
-- ×悪い例
order by 1, 2
;
-- 〇良い例
order by col_1, col_2
;
コメントは詳しく書く
-- 〇良い例
SELECT
CASE
-- 営業部の場合
WHEN dept_cd = 'A001' THEN '1'
-- 人事部の場合
WHEN dept_cd = 'A002' THEN '2'
-- 総務部の場合
WHEN dept_cd = 'A003' THEN '3'
-- それ以外の場合
ELSE '9'
END AS dept
FROM
tbl_a
WHERE
-- ステータスフラグが「1:有効」
status_flag = '1'
;
コメント