FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【SQL】SQLを読み解く前に知っておきたいこと(SQLの実行順序・読み方のまとめ)

■今回の紹介

SQLの読み解き方についてメモする。

以下のような順序でメモする。

1.基本的な評価順序

2.サブクエリ

3.相関サブクエリ

■1.基本的な評価順序について

 SQLを読み解いていくにあたり、句の実行順序を頭に入れておくのは必須。
 しかし、意外とその資料は少ないので、以下に整理した。


 基本的にSQLは以下の順番で実行される。
  1.from
  2.where
  3.group by
  4.having
  5.select
  5.union
  6.order by
  7.distinct
 ※上記の基本があるため、select句で別名をつけても、where句では評価されない。

参考:http://www.postgresql.jp/document/8.1/html/sql-select.html


■2.サブクエリについて

 読み方のコツとしては、必ず一番内側のクエリから読み解いていくこと。
 内側の結果に対し、基本的には外側のクエリを評価している。
 サブクエリとは、クエリを入れ子にして、
 内側のクエリの評価をもとに外側のクエリの結果を取得するような処理。

  例)

select A.ID from TABLE_A where A.NAME in (SELECT B.NAME from TABLE_B)

このサブクエリは、様々な場所に記述可能であり、よく実務でも見かける。
select句の中や、from句の中、上記で上げているようなwhere句の中など。

参考:
[SQL] 7. サブクエリ 1 | TECHSCORE(テックスコア)


■3.相関サブクエリ

入れ子になっているクエリの中でも、例外的な読み方が必要になる。
入れ子になっているクエリで、外側を参照していたら、外側のデータ1行1行に対し、
内側のクエリが実行されているイメージで読み解く必要がある。

例)

selet org.ID,org.NAME from TABLE_A org
  	  where org.SURYO = (select MAX(SURYO) from TABLE_A WORK where org.CD = WORK.CD
  	  )


参考:
相関サブクエリ
第9回 SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (1)サブクエリ:SQLアタマアカデミー|gihyo.jp … 技術評論社


.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }