インデント
SQL の命名規約とフォーマットの続き・・・になるのかな。
SQL には終了タグはないけど SELECT 文以下はまとまりになっているから、インデントしたほうが自然に感じる。基本的には SQLプログラミング作法 に従ってるけどそこは好みかな。
...<SELECT> <select-list> * </select-list> <FROM> emp </FROM> <WHERE> id = 1 </WHERE> </SELECT>SELECT * FROM emp WHERE id = 1SQL のコーディングスタイル(インデント) - 集中力なら売り切れたよ
この発想はなかった!
ただ、個人的には SELECT 文の SELECT 句という認識なので、
<select-statement> <select>*</select> <from>emp</from> <where>id = 1</where> </select-statement>
なんだよね。これだと、WITH を使った場合でも
<select-statement> <with name="emp"> <select>1 AS id</select> </with> <select>*</select> <from>emp</from> <where>id = 1</where> </select-statement>
WITH emp AS ( SELECT 1 AS id ) SELECT * FROM emp WHERE id = 1
自然にインデントが決まる。
ただ、今は WITH を
<select-statement> <with> <with-body name="emp"> <select>1 AS id</select> </with-body> </with> <select>*</select> <from>emp</from> <where>id = 1</where> </select-statement>
こんな感じに捉えてるから、
WITH emp AS ( SELECT 1 AS id ) SELECT * FROM emp WHERE id = 1
こうだけどね。こうすることで、共通表式を複数持ってる SQL でも対応できる。
あと、SELECT を持つ INSERT とかは、
<insert-statement into="emp"> <select-statement/> </insert-statement>
な感じだから、
INSERT INTO emp SELECT ...
みたいに、INSERT にぶら下がる。