SQLのコーディングスタイル
はじめに
プログラミング言語でソースの書き方にこだわりについての話題って良く見る。
メジャーどころは字下げスタイルあたりだろう。Wikipediaに記事があるくらいにメジャー。
http://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB
SQLのコーディングスタイルって、わりとプロジェクトごとのこだわりが強いわりに明文化されていない。納得するものもあれば微妙だなあというものも。
改行しない
短いものであれば可読性が低くていいし、他の言語から生成してるなら生成元を見られれば問題無し。
SELECT id,name,age FROM users
それでも改行無しで長いものを書かれると辛い。これが苦もなく読める人はなんなのだろう。
予約語ごとの塊で改行
少しは見やすいスタイル。ある程度複雑なクエリになるとこれでも苦しくなってくるはず。
SELECT id,name,age FROM users
これらの問題点はSELECTの所にCOUNTや計算などが入っり、複数のテーブルを参照したり条件が複雑化した場合に、視認性が一気に悪くなるところ。
カンマは前に
なんとなく合理的なものなのだけどなんとなく不思議な気分になる前カンマ。
SELECT id ,name ,age FROM users
利点としては選択する項目を増やしたい場合、後ろにカンマがある場合だと
SELECT id, name, age FROM users
→
SELECT id, name, age, --後ろにカンマを追加 sex --項目追加 FROM users
と言った具合に、二行分変更する事になるが、前にカンマをうつスタイルになら一行分だけで済むからだ。
SELECT id ,name ,age ,sex --カンマと項目の追加 FROM users
この場合、最初に選択してる項目がselectと同じ行なのは
SELECT id ,name ,age FROM users
こんなかんじだと微妙だからなのかな。
空白スペースを置いて揃える
そろってる感が大事な人がいるとこんな感じに。
SELECT id,name,age FROM users
二つ目の予約語FROMの前に半角スペース2個いれてSELECTと長さを合わせる。
SELECT id, name, age FROM users
こちらも予約語SELECTのおしりに合わせる方向のスタイル。
見やすいなとは思うのだけどORDER BY等が入ると微妙に違和感を感じてしまって、ここまでして揃えなくても…と思う。
SELECT id, name, age FROM users ORDER BY id WHERE age > 18
自分が書きがちなスタイル
ざっと自分で書くときは「予約語のあとは改行、その範囲内の項目(SELECTなら選択項目名称、FROMなら参照テーブル名称)はインデント後に記述、カンマは後ろ」といった単純なスタイルで記述している。
SELECT id, name, age FROM users ORDER BY id WHERE age > 18
おわりに
改行なしは厳しいけどあとのスタイルは特に善し悪し無くて、そのプロジェクトごとに揃ってさえいれば問題ないかな、という認識だ。