SELECT文の可読性を高めるために心がけていること

SELECT文といっても、単一テーブルしか使わないようなSQLではなくて、複数テーブルを結合するような場合に、気をつけていることを書き出してみます。

USING句よりON句を使う

2つのテーブルならば、それほど気にはなりませんが、3つ以上のテーブルを結合する際には、ON句で指定した列が、どのテーブルの列にかかってきているかわからなくなります。
なので、タイプ量が増えるとしても、ON句を使うようにしています。

USINGの場合
SELECT u.user_id, u.name, p.password, d.name
  FROM user u
    LEFT JOIN pass p
      USING(user_id)
    LEFT JOIN dep d
      USING(dep_id)
ON句の場合
SELECT u.user_id, u.name, p.password, d.name
  FROM user u
    LEFT JOIN pass p
      ON(u.user_id = p.user_id)
    LEFT JOIN dep d
      ON(u.dep_id = d.dep_id)

また、WHERE句で結合条件を書いてしまうと、情報が分散する(ような気がする)ので、そのような書き方もしません。(Oracleだと、昔はUSINGやONが使えなかったため、WHERE句に書く人が多いような気がします。自分もそうでした。)

WHERE句は別名.列で指定する

列名がかぶらなければ、別名を付けて指定する必要はありませんが、つけたほうが断然読みやすいと思うので、つけるように心がけています。

SELECT u.user_id, u.name, p.password
  FROM user u
    LEFT JOIN pass p
      ON(u.user_id = p.user_id)
  WHERE u.mail = 'test@xxx.xxx'
    AND p.password = 'password'


あと、、これは全てのSQL文に言えることですが、可読性をあげるには、まずは「インデントを揃えること」が重要ですね。