SQL入門 4章 :)
今日はスッキリわかるSQL入門(中山清喬・飯田理恵子著)4章〜
検索結果の加工
SELECT文だけに可能な修飾というのがあるらしいからとりあえずかいておく〜
◎DISTINCT
- SELECT文に付加すると結果表の中で内容が重複している行があれば取り除いてくれる
- データの種類を取得したいとき役にたつ
- DISTINCT修飾だけはSELECT文の最初に記述する必要があるので注意!
◎ORDER BY
- SELECT文の最後にORDER BY句を記述すると指定した列の値を基準として検索結果を並び替え取得できる
- 昇順にする場合はASC、降順にする場合はDESCを指定(ちなみに初期値は昇順)
- ORDER BY句に文字列を指定するとDBMSに設定された照合順序(文字コード順、アルファベット順など)を基準として並び替えられる
ORDER BY句における列指定に列番号を用いる場合、SELECT文の選択列リストの記述を修正すると並び替えの結果にも影響が及ぶので注意!
◎LIMIT
- LIMIT句には全部で何件のデータを取得するのかを整数値で指定
- OFFSETは先頭からではなくデータの途中から数えたい場合に任意で指定する
LIMIT句は ORDER BY句と併用されることが多い機能だがLIMIT句だけでも使用可能
集合演算子
集合演算とはSELECT命令によって抽出した結果表を1つのデータの集合ととらえ、その結果同士を足し合わせたり、共通部分を探したりといったさまざまな演算を行ってくれる
◎UNION
2つのSELECT文をUNIONでつないで記述すると、それぞれの検索結果を足し合わせた結果(和集合)が返される
UNIONでは重複行を1行にまとめるのに対しUNION ALLでは重複行をすべてそのまま返す
◎EXCEPT/MINUS
ある集合と別の集合の差である差集合を求める
OracleDBではMINUSをつかう
差集合はどの集合を基準とするかによって結果が変わるのでSELECT文の順番に注意が必要
◎INTERSECT
2つのSELECT文に共通する行を集めた積集合を求める
4章はこんな感じかな。
ORDER BY句のASC(昇順)ってつけなくても昇順になるのになんであるんだろ。
いまMySQL使ってるんだけど、MySQLではこの章のEXCEPTが使えないのと、INTERSECTがなんかちょっと違う感じになってて、調べてみたけど死にそう。言ってることはなんとなくわかるからとりあえずこんな感じでやってみる。うまくいくかは知らない。
参考
なんかいろいろ記事あさってたけど、なぜその書き方をしたのか、そのクエリを使用した理由を説明できたらちゃんとわかってることになるのかな〜?
いまはこのときはこれをつかうって感じで表面的にしかわかってない感じする
ちょっと意識してやってみよかな〜
次は5章 式と関数