reponの忘備録

「喉まででかかってる」状態を解消するためのメモ

LAMPのお勉強日記 (8)

LAMP環境のお勉強日記

目的

  • 自分が何をやったのか記録する
  • 自分が何を出来るのか公開する

経過

まず、MySQLの勉強をする(その後、PHPとの連携の勉強に移る予定)。

XAMPPにより、コマンドプロンプトで作業する。

リレーショナルデータベースとは(再掲)



はじめに

MySQLモニタに入る。
コマンドプロンプト

>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」を複数混ぜて抽出することも可能。

ただし、

  1. かっこ「()」が優先される
  2. かっこが無い場合、「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 |
+------+------+------+


今回はここまで

中途半端だが、いったん切ります。

次回は、「グループごとの表示」を取り上げます。

おしらせ

つながり合うSNS


http://survive-sns.jp/


メンバー募集中です!


サーバを新たに立て、一新した「サバイブSNS2.0」に、ぜひご加入ください!