LAMPのお勉強日記 (8)
LAMP環境のお勉強日記
目的
- 自分が何をやったのか記録する
- 自分が何を出来るのか公開する
はじめに
>mysql -u root -p
Enter password:[パスワード]
mysql>
使用するデータベースを指定する
mysql>use db1
今日学んだこと
基本となるテーブル
mysql>select * from tb1; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a103 | 101 | 4 | | a102 | 54 | 5 | | a104 | 181 | 4 | | a101 | 184 | 4 | | a103 | 17 | 5 | | a101 | 300 | 5 | | a102 | 205 | 6 | | a104 | 93 | 5 | | a103 | 12 | 6 | | a107 | 87 | 6 | +------+------+------+
複数の条件を指定した選択
「and」「or」を使う。
たとえば、
「select * from tb1 where uria between 50 and 100;」
と、
「select * from tb1 where uria>=50 and uria<=100;」
は同じ。
こちらの方がわかりやすい ( ̄ー ̄)V
mysql>select * from tb1 where uria between 50 and 100; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a102 | 54 | 5 | | a104 | 93 | 5 | | a107 | 87 | 6 | +------+------+------+ mysql>select * from tb1 where uria>=50 and uria<=100; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a102 | 54 | 5 | | a104 | 93 | 5 | | a107 | 87 | 6 | +------+------+------+
「bangが1で終わり、tukiが4のデータを抽出する」→あいまい検索「like」を使う
mysql>select * from tb1 where bang like '%1' and tuki=4; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a101 | 184 | 4 | +------+------+------+
また、
「select * from tb1 where uria not between 50 and 200;」
と、
「select * from tb1 where uria<50 or uria>200;」
は同じ。
こちらの方がわかりやすい ( ̄ー ̄)V
mysql>select * from tb1 where uria not between 50 and 200; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a103 | 17 | 5 | | a101 | 300 | 5 | | a102 | 205 | 6 | | a103 | 12 | 6 | +------+------+------+ mysql>select * from tb1 where uria<50 or uria>200; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a103 | 17 | 5 | | a101 | 300 | 5 | | a102 | 205 | 6 | | a103 | 12 | 6 | +------+------+------+
「and」「or」を複数混ぜて抽出することも可能。
ただし、
- かっこ「()」が優先される
- かっこが無い場合、「or」より「and」が優先される
ex) mysql>select * from tb1 where uria>=200 or bang like '%1' and tuki=4; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a101 | 184 | 4 | | a101 | 300 | 5 | | a102 | 205 | 6 | +------+------+------+ mysql>select * from tb1 where (uria>=200 or bang like '%1') and tuki=4; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a101 | 184 | 4 | +------+------+------+
「case when」を使う
「case when」文を使うと、当てはまるデータを言い換えて抽出してくれる。
mysql>select bang,uria ->case -> when uria>=100 then '多い' -> when uria>=50 then '中くらい' -> else '少ない' ->end as 評価 ->from tb1; +------+------+----------+ | bang | uria | 評価 | +------+------+----------+ | a103 | 101 | 多い | | a102 | 54 | 中くらい | | a104 | 181 | 多い | | a101 | 184 | 多い | | a103 | 17 | 少ない | | a101 | 300 | 多い | | a102 | 205 | 多い | | a104 | 93 | 中くらい | | a103 | 12 | 少ない | | a107 | 87 | 中くらい | +------+------+----------+
並べ替え
「order」を使う。
「select [カラム名] from [テーブル名] order by キーとなるカラム;」
mysql>select * from tb1 order by uria; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a103 | 12 | 6 | | a103 | 17 | 5 | | a102 | 54 | 5 | | a107 | 87 | 6 | | a104 | 93 | 5 | | a103 | 101 | 4 | | a104 | 181 | 4 | | a101 | 184 | 4 | | a102 | 205 | 6 | | a101 | 300 | 5 | +------+------+------+
降順に並べるには「desc」を使う。(昇順は「asc」)
mysql>select * from tb1 order by uria desc; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a101 | 300 | 5 | | a102 | 205 | 6 | | a101 | 184 | 4 | | a104 | 181 | 4 | | a103 | 101 | 4 | | a104 | 93 | 5 | | a107 | 87 | 6 | | a102 | 54 | 5 | | a103 | 17 | 5 | | a103 | 12 | 6 | +------+------+------+
レコード数の制限には、「limit」を使う。
mysql>select * from tb1 order by uria desc limit 5; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a101 | 300 | 5 | | a102 | 205 | 6 | | a101 | 184 | 4 | | a104 | 181 | 4 | | a103 | 101 | 4 | +------+------+------+
範囲を決めた表示−「offset」
mysql>select * from tb1 order by uria desc limit 2 offset 3; +------+------+------+ | bang | uria | tuki | +------+------+------+ | a104 | 181 | 4 | | a103 | 101 | 4 | +------+------+------+
今回はここまで
中途半端だが、いったん切ります。
次回は、「グループごとの表示」を取り上げます。