[SQL] コーディング規約(サンプル)

スポンサーリンク
SQL

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'
;

コメント

タイトルとURLをコピーしました