みんなの為のMySQLまとめ（６）

参考
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_11.htm
###■抽出問い合わせ(抽出条件、条件抽出)

  ・単純な抽出条件は次のように指定する。
    この例では、key1 が「a001」のものだけが問い合わされる。

>select * from testm
  where key1 = 'a001'
  order by key1
;
![kobito.1423384908.635072.png](https://qiita-image-store.s3.amazonaws.com/0/59354/11bc2e19-b581-9aad-6547-3f58a7553139.png "kobito.1423384908.635072.png")

 ・この例では、key1 が「a001」以外のものだけが問い合わされる。
> select * from testm
  where key1 <> 'a001'
  order by key1
;
![kobito.1423445330.767335.png](https://qiita-image-store.s3.amazonaws.com/0/59354/8f2c24d4-50cd-86fc-0807-41e5800ed39a.png "kobito.1423445330.767335.png")

  ・この例では、data3 が NULL のものだけが問い合わされる。
    (空列検索、NULL 列検索、NULL 検索、NULL 抽出)

>select * from testm
  where data3 is null
  order by key1
;

  ・この例では、data3 が NULL でないものだけが問い合わされる。
    (NULL 以外)

>select * from testm
  where not data3 is null
  order by key1
; 

・範囲抽出条件は次のように指定する。
    この例では、key1 が「a000」～「a999」の範囲が問い合わされる。

>select * from testm
  where key1 >= 'a000' and key1 <= 'a999'
  order by key1
;
![kobito.1423445680.474696.png](https://qiita-image-store.s3.amazonaws.com/0/59354/9337208a-8d77-e1a7-936d-93cf0d669e73.png "kobito.1423445680.474696.png")

  ・SQL 関数を用いての抽出条件は次のように指定する。
    この例では、key1 が「a」で始まるものが問い合わされる。
>select * from testm
  where substring(key1, 1, 1) = 'a'
  order by key1
;

 ・substring() を使うより、マッチパターンの like を使う方が便利である。
    この例では、key1 が「a」で始まるものが問い合わされる。

>select * from testm
  where key1 like 'a%'
  order by key1
;

![kobito.1423445838.610856.png](https://qiita-image-store.s3.amazonaws.com/0/59354/dc3c36c9-667f-9217-ded9-868782c60c8c.png "kobito.1423445838.610856.png")

・like では、ワイルドカードの「%」と一文字マッチ用の「_」が使える。
    この例では、key1 が先頭はなんでもよいが、それ以降が「001」のものが問
    い合わされる。しかし、最後に「%」がないと抽出されない。
  >  select * from testm
  where key1 like '_001%'
  order by key1
;
![kobito.1423446008.010681.png](https://qiita-image-store.s3.amazonaws.com/0/59354/62fb6ddd-391e-951c-5ca3-b7a358034578.png "kobito.1423446008.010681.png")

・between では、値の範囲を指定できる。
    この例では、data3 が 10 ～ 100 のものが問い合わされる。

>select * from testm
  where data3 between 10 and 100
  order by key1
;
![kobito.1423446090.569968.png](https://qiita-image-store.s3.amazonaws.com/0/59354/364bf88d-0535-663b-b386-d8900e7192d7.png "kobito.1423446090.569968.png")

・and では、条件を共に満たす抽出がてきる。
    この例では、data1 と data2 が 10 より上のものだけが問い合わされる。

>select * from testm
  where data1 > 10 and data2 > 10
  order by key1
;
![kobito.1423446180.504515.png](https://qiita-image-store.s3.amazonaws.com/0/59354/7115f631-2027-48f8-f09c-fe5091891a62.png "kobito.1423446180.504515.png")

 ・or では、各条件を満たす抽出がてきる。
    この例では、data1 か data2 のどちらが 10 より上のものが問い合わさ
    れる。

>select * from testm
  where data1 > 10 or data2 > 10
  order by key1
;
![kobito.1423446328.321097.png](https://qiita-image-store.s3.amazonaws.com/0/59354/a8855830-b7a4-c62c-fc50-11192278e363.png "kobito.1423446328.321097.png")

・and と or の組み合わせは、優先順位を () で必ず指定するようにする。
    この例では、data1 か data2 のどちらが 10 より上のもので、key1 の先頭
    が「c」で始まるものだけが問い合わされる。

>select * from testm
  where (data1 > 10 or data2 > 10) and key1 like 'c%'
  order by key1
;
![kobito.1423446427.724957.png](https://qiita-image-store.s3.amazonaws.com/0/59354/0e2eba65-d60a-971b-6a79-ed5d0021b277.png "kobito.1423446427.724957.png")


###■ソート(並べ換え、並べ替え)

  ・order by 句でソート順が指定できる。
    この例では、key1 の昇順に問い合わされる。

>select * from testm
  order by key1
;
![kobito.1423446506.173144.png](https://qiita-image-store.s3.amazonaws.com/0/59354/ac8a133d-a829-384c-8e4b-41fd886e14d2.png "kobito.1423446506.173144.png")

  ・desc を指定すると降順になる。
    この例では、key1 の降順に問い合わされる。

>select * from testm
  order by key1 desc
;

 ・ソートオーダは複数項目指定できる。
    この例では、data1 の大きい順で key1 の昇順に問い合わされる。

>select * from testm
  order by data1 desc, key1
;
![kobito.1423446590.557574.png](https://qiita-image-store.s3.amazonaws.com/0/59354/f623c0b4-d509-1b8a-ef8a-c34f94b7133d.png "kobito.1423446590.557574.png")