SQLの小技

sql

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

データ調査が多い人にはとても便利な方法です。

まとめ

思い付いたことがありましたら、書き足していきます。

これは宗教戦争みたいでどちらが正しいというのはないです。
たまに書き換え合戦が発生したりして、
おもしろいです。

タイトルとURLをコピーしました
Close Bitnami banner
Bitnami