本スタイルガイドはSQL開発者向けのスタイルガイドです。
・名前には英字、数字、アンダースコアのみを使用する。
理由:標準SQLに準拠。
・名前は半角アルファベットから始める。
理由:標準SQLに準拠。
・名前はアンダースコアでは終わらない。
理由:見づらいため。
例:COLUMN1_ ←←←アンダースコア付けています。
・複数の連続したアンダースコアの使用を避ける。読取るのが難しくなるため。
理由:見づらいため。
例:COLUMN__01 ←←←アンダースコア2つ付けています。
・名前にスペースを含めるのが自然な場合は、アンダースコアを使用する。(スネークケースとも呼ばれます)
例:first nameはfirst_name
・テーブルはテーブル種類+連番_名称
例:M001_HINMOKU
テーブル種類:M(マスタ)、T(トランザクション)、W(ワーク)、S(システム)、V(ビュー)
・ユニーク制約はuq_テーブル名_連番
例:uq_TABLE01_01
・インデックスはidx_テーブル名_連番
例:idx_TABLE01_01
:ux_TABLE01_01 ・・・ ユニークインデックス
・フラグはflagをつけて、"0(OFF)","1(ON)"のみとする。
例:購入フラグ="0" ・・・ 購入していない
購入フラグ="1" ・・・ 購入した
・区分は複数の意味を持たせるときに使う。固定長文字列のみ
例:品目区分="01(製品)","02(部品)","03(材料)"
・タブを使わず、スペースを使う。
・インデントは2スペース(4スペースでも良い)
・予約語も含めて原則小文字で書く。
理由:大文字か小文字かで迷ったりレビューで指摘するのがムダに思えるためです。
・項目名を並べるときは、カンマを先頭にする。
理由:カンマを項目の後にすると、仮に項目を1行追加するとき、1行変更して1行追加となってしまうため。
・文末のセミコロンは改行して書く。
理由:カンマと同じ理由。
・コメントは--(ハイフンハイフン)で書く。/* (スラッシュアスタリスク)は使わない。
理由:grep検索したときにコメント行かどうかがすぐわかるため。
・演算子の優先順位を明確にするためにカッコ()をつけましょう。
理由:判断に迷うため。
〇: A OR (B AND C)
X: A OR B AND C
・SELECTは全体がごく短い場合は1行で書いても良い。
例:select A from B where A='1'
・全列ワイルドカード * (アスタリスク)の使用はせず、カラム名を明記する。
・別名を定義するときはASをつける。
例:COLUMN1 AS 列名
・FROMには複数のテーブル名を並べない。JOINを使う。
悪い例:from TABLE01,TABLE02
良い例:from TABLE01
inner join TABLE02
・INNER JOINを先に記述し、その後にLEFT JOINを記述する。RIGHT JOINは使わない。
理由:機能的な意味は無く、制限が強いものから順番に書いた方がわかり易いと思うため。
・EXISTS句は1を使う。
例:exists (select 1 from TABLE04 ・・・
・ORDER BY句、GROUP BY句は数字ではなくカラム名を使う
悪い例:order by 1 , 2
良い例:order by COLUMN1,COLUMN2
【サンプル】
select
COLUMN1
,COLUMN2
,COLUMN3
,sum(COLUMN4) as SUM_D
from
TABLE01 as TB1
inner join TABLE02 as TB2
on TB1.COLUMN1 = TB2.COLUMN1
and TB1.COLUMN2 = TB2.COLUMN2
and '1' = TB2.COLUMN3
left join TABLE03 as TB3
on TB1.COLUMN1 = TB3.COLUMN1
and TB1.COLUMN2 = TB3.COLUMN2
where
TB1.COLUMN4 = 'A'
and TB1.COLUMN5 = 'B'
and exists (select 1
from
TABLE04 as TB4
where
TB1.COLUMN1 = TB4.COLUMN1
and '1' = TB4.COLUMN2
)
group by
COLUMN1
,COLUMN2
,COLUMN3
order by
COLUMN1
,COLUMN2
,COLUMN3
;
【サンプル】
insert into
TABLE01 (
COLUMN1
,COLUMN2
,COLUMN3
)
values (
VALUE1
,VALUE2
,VALUE3
)
;
【サンプル】
update
TABLE01 AS TB1
set
TB1.COLUMN3 = 100
,TB1.COLUMN4 = 100
where
TB1.COLUMN1 = 10
and TB1.COLUMN2 = 20
;
【サンプル】
delete
from
TABLE01 AS TB1
where
TB1.COLUMN1 = 1
and TB1.COLUMN2 = 2
;
・できるだけベンダー固有のデータ型は使用しないようにする。
理由:これからシステムの保守をする人が、必ずしもそのDBに詳しいとは限らないため。
・数値型はNUMERICとDECIMAL型が望ましい。
理由:浮動小数点は誤差に気をつける必要があるため。
Pull requests are welcome!!
Or If you find issues, please send it!!
Copyright © IT & Strategy
Distributed under the MIT License.