SAK 図書館
MySQL 編11 - 問い合わせ、抽出、ソート、where、like、order by、desc
■抽出問い合わせ(抽出条件、条件抽出) ・単純な抽出条件は次のように指定する。 この例では、key1 が「a001」のものだけが問い合わされる。 select * from testm where key1 = 'a001' order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | a001 | 1 | 2 | 3 | +------+-------+-------+-------+ ・この例では、key1 が「a001」以外のものだけが問い合わされる。 select * from testm where key1 <> 'a001' order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | a011 | 1 | 2 | 3 | | b002 | 10 | 20 | 30 | | c003 | 100 | 200 | 300 | +------+-------+-------+-------+ ・この例では、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 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | a001 | 1 | 2 | 3 | | a011 | 1 | 2 | 3 | +------+-------+-------+-------+ ・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 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | a001 | 1 | 2 | 3 | | a011 | 1 | 2 | 3 | +------+-------+-------+-------+ ・like では、ワイルドカードの「%」と一文字マッチ用の「_」が使える。 この例では、key1 が先頭はなんでもよいが、それ以降が「001」のものが問 い合わされる。しかし、最後に「%」がないと抽出されない。 これは要注意である。 select * from testm where key1 like '_001%' order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | a001 | 1 | 2 | 3 | +------+-------+-------+-------+ ・between では、値の範囲を指定できる。 この例では、data3 が 10 〜 100 のものが問い合わされる。 select * from testm where data3 between 10 and 100 order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | b002 | 10 | 20 | 30 | +------+-------+-------+-------+ ・and では、条件を共に満たす抽出がてきる。 この例では、data1 と data2 が 10 より上のものだけが問い合わされる。 select * from testm where data1 > 10 and data2 > 10 order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | c003 | 100 | 200 | 300 | +------+-------+-------+-------+ ・or では、各条件を満たす抽出がてきる。 この例では、data1 か data2 のどちらが 10 より上のものが問い合わさ れる。 select * from testm where data1 > 10 or data2 > 10 order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | b002 | 10 | 20 | 30 | | c003 | 100 | 200 | 300 | +------+-------+-------+-------+ ・and と or の組み合わせは、優先順位を () で必ず指定するようにする。 この例では、data1 か data2 のどちらが 10 より上のもので、key1 の先頭 が「c」で始まるものだけが問い合わされる。 select * from testm where (data1 > 10 or data2 > 10) and key1 like 'c%' order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | c003 | 100 | 200 | 300 | +------+-------+-------+-------+ ■ソート(並べ換え、並べ替え) ・order by 句でソート順が指定できる。 この例では、key1 の昇順に問い合わされる。 select * from testm order by key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | a001 | 1 | 2 | 3 | | a011 | 1 | 2 | 3 | | b002 | 10 | 20 | 30 | | c003 | 100 | 200 | 300 | +------+-------+-------+-------+ ・desc を指定すると降順になる。 この例では、key1 の降順に問い合わされる。 select * from testm order by key1 desc ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | c003 | 100 | 200 | 300 | | b002 | 10 | 20 | 30 | | a011 | 1 | 2 | 3 | | a001 | 1 | 2 | 3 | +------+-------+-------+-------+ ・ソートオーダは複数項目指定できる。 この例では、data1 の大きい順で key1 の昇順に問い合わされる。 select * from testm order by data1 desc, key1 ; +------+-------+-------+-------+ | key1 | data1 | data2 | data3 | +------+-------+-------+-------+ | c003 | 100 | 200 | 300 | | b002 | 10 | 20 | 30 | | a001 | 1 | 2 | 3 | | a011 | 1 | 2 | 3 | +------+-------+-------+-------+ ■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料