SQLの小技について
SQLというか開発上でよく使われる小技についてあげていきます
Where 1=1 といれる
SQLを見ていて余計な 1=1
と入っていることがあります。
これは何で入っているのでしょうか?
それは抽出条件を変えてテストする時に簡単だからです
WHERE 1 = 1 AND 顧客名 = 'XYZ会社' AND 国 = '日本'
というSQLで顧客名の検索条件を外したい時、
このようにコメントアウトを追加するだけでテストできます。
WHERE 1 = 1
-- AND 顧客名 = 'XYZ会社'
AND 国 = '日本'
ですのでテストの時、下のように書くより簡単にできます。
WHERE 顧客名 = 'XYZ会社' AND 国 = '日本'
SELECTの項目の前に,を入れる
SELECTのカンマを入れる時に項目の前に入れますでしょうか?
それとも項目の後に入れますでしょうか?
前にカンマを入れる方がおすすめです。
SELECT
顧客名
,国コード
FROM
SELECT
顧客名,
国コード
FROM
以下のような変更をする時に影響します
- 新しい項目の追加
- 項目の削除
- コメントアウト
このような修正は、項目の最後を変更することが多いです。
カンマを前に入れると一行のみの変更ですみます。
カンマを後にすると2行の修正が必要です。
そういった理由でカンマは前に入れることをおすすめします。
サンプルを見てください。
住所の追加の場合
SELECT
顧客名
,国コード
,住所
FROM
SELECT 顧客名, 国コード, 住所 FROM
国コードの削除の場合
SELECT 顧客名,国コードFROM
SELECT 顧客名,国コードFROM
コメントアウトの場合
SELECT
顧客名
-- ,国コード
FROM
SELECT 顧客名,-- 国コード FROM
特定の項目を前に表示したい
後ろの方にある項目を前に表示する簡単な方法を紹介します。
社員(EMPLOYEE)テーブルの情報を全件出して、年齢データを調べていたとします。
SELECT * FROM EMPLOYEE EMP
社員名の項目は左にあり、年齢項目がずっと右にあったとします。
これは調べにくいですよね。
誰が何歳かを見るのに横にスクロールしないとみれません。
通常このようにSQLを書き直します。
SELECT
EMP.EMPLOYEE_NAME
,EMP.AGE
FROM EMPLOYEE EMP
これで2つの項目を見比べることができます。
これを書く時に、次のように先頭に項目を書けたら簡単だと思いませんでしたでしょうか?
SELECT
EMP.AGE
,*
FROM EMPLOYEE EMP
残念ながら上のSQLはエラーになります。
ですが回避する方法があるのです。
テーブル名.*を使う事で、すべての項目を出したまま、項目を追加できます。
SELECT
EMP.AGE
,EMP.*
FROM EMPLOYEE EMP
データ調査が多い人にはとても便利な方法です。
まとめ
思い付いたことがありましたら、書き足していきます。
これは宗教戦争みたいでどちらが正しいというのはないです。
たまに書き換え合戦が発生したりして、
おもしろいです。