初めに
データベースとSQLは現在のデータサイエンスに必須な知識・スキルの1つ。その基礎を
を基に学んできた。
この知識をより昇華させて「SQL中級者になりたい!」ため、同じ著者の
を参考に、更なるSQLの知識を拡充していこう。
前回
12. SQLプログラミング作法
においても読みやすく、分かりやすく書く努力は必要である。
12.1 テーブル設計
12.1.1 名前と意味
リレーショナルデータベースがシステムの世界で支持を得たのは、アドレスを無意味なものとして追放し、名前を残した点にある。そのため、列、テーブル、インデックス、制約は名が体を表すような具体的な名前を付ける。
では、①アルファベット、②数字、③アンダースコアが許容される。また標準
は先頭を文字で始めることを要請する。
12.1.2 属性と列
列に入るデータは複数の意味を持たせてはならない。データベースでは、列はある実体の「属性」であり、変更してはならないからである。
12.2 コーディングの指針
12.2.1 コメント
ではコメントは積極的に残した方が良い。
は宣言型言語であり、同じ処理を記述するにも非常に凝縮されたコードに多くの処理を詰める。そのためコードを見てもその意図が分かりづらいため
では段落的な実行デバッグが殆ど出来ないため
-- 1行コメントはハイフンを連続で2つ /* 複数行に渡るコメントは、そのコメントを/*(コメント)*/という形で書く */ SELECT * FROM TMP -- SQLではコードの途中に空行を含むことができないものの、このようにコメントを挟むことは可能 WHERE TMP.A ='' SELECT * -- またこのようにその行の最後にコメントを付記することも可能 FROM TMP WHERE TMP.A=''
12.2.2 インデント、スペース
インデント、スペースをしっかりと付けると、可読性が抜群に向上するため。
-- 適度にインデントを加えた良い見本 SELECT col_1, col_2,col_3, COUNT(*) FROM tbl_A WHERE col_1 = 'a' AND col_2 = ( SELECT MAX(col_2) FROM tbl_B WHERE col_3 = 100 ) GROUP BY col_1, col_2, col_3
12.3 大文字と小文字
プログラミングでも重要な語句は大文字、重要でない語句は小文字で書く。
では、予約語は大文字、列名やテーブル名は小文字にするという共通理解がかなりの程度成立している。
12.3.1 カンマ
カンマは要素と要素の中間に置く方が望ましい。こうすることで、ある1行を除いてもエラーにならない、エディタでの編集がやりやすくなるためである。
-- カンマの望ましい打ち方 SELECT col_1 ,col_2 ,col_3 ,COUNT(*) FROM tbl_A WHERE col_1 = 'a' AND col_2 = ( SELECT MAX(col_2) FROM tbl_B WHERE col_3 = 100 ) GROUP BY col_1 ,col_2 ,col_3
12.3.3 ORDER BYで列番号を避ける
可読性が悪くなり、保守性の観点から避けるべきである。
12.4 まとめ
読みにくいコードは誰にとっても望ましくない。