reponの忘備録

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

LAMPのお勉強日記 (14)

LAMP環境のお勉強日記

目的

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

経過

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

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

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



はじめに

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

>mysql -u root -p
Enter password:[パスワード]
mysql>

使用するデータベースを指定する

mysql>use db1

今回学んだこと

「ビュー」について


ビューとは、いくつかのテーブルからデータを抽出して作り出した、元のテーブルと関連性を持っているテーブル。


「create view [ビューの名前] as select [カラム名] from [テーブル名] where [条件]」


例1
ex)
mysql>create view v1 as select nama,tosi from tb1;
mysql>select * from v1;
+-----------+------+
| nama      | tosi |
+-----------+------+
| sato      |   40 |
| takahashi |   28 |
| nakagawa  |   20 |
| watanabe  |   23 |
| nishizawa |   35 |
+-----------+------+
ビューの更新

元のテーブルと関連性を持っているので、ビューを変更すると元のテーブルにも反映される

ビューを更新すると、元になっているテーブルも更新される。

ex)
mysql>update v1 set nama='shunin-sato' where nama='sato';
mysql>select * from v1;
+------------+------+
| nama       | tosi |
+------------+------+
| shunin-sat |   40 |
| takahashi  |   28 |
| nakagawa   |   20 |
| watanabe   |   23 |
| nishizawa  |   35 |
+------------+------+
mysql>select * from tb1;
+------+------------+------+
| bang | nama       | tosi |
+------+------------+------+
| a101 | shunin-sat |   40 |
| a102 | takahashi  |   28 |
| a103 | nakagawa   |   20 |
| a104 | watanabe   |   23 |
| a105 | nishizawa  |   35 |
+------+------------+------+
条件を付けてビューを作成してみる。

テーブル「tb」からカラム「uria」が100以上のレコードだけ抽出、そこにテーブル「tb1」を結合させて、社員の氏名も表す。

ex)
mysql>create view v2 as select tb.bang,tb1.nama,tb.uria from tb join tb1 using(bang) where tb.uria>=100;
mysql>select * from v2;
+------+------------+------+
| bang | nama       | uria |
+------+------------+------+
| a103 | nakagawa   |  101 |
| a104 | watanabe   |  181 |
| a101 | shunin-sat |  184 |
| a101 | shunin-sat |  300 |
| a102 | takahashi  |  205 |
+------+------------+------+

※using(bang)は、bang.tb=bang.tb1と同じ。

元のテーブルを変更した場合、条件付きのビューは変更されるか?
ex)
mysql>select * from tb;
+------+------+------+
| 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 |
+------+------+------+
mysql>update tb set uria=777 where uria=54;
+------+------+------+
| bang | uria | tuki |
+------+------+------+
| a103 |  101 |    4 |
| a102 |  777 |    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 |
+------+------+------+
mysql>select * from v2;
+------+------------+------+
| bang | nama       | uria |
+------+------------+------+
| a103 | nakagawa   |  101 |
| a102 | takahashi  |  777 |
| a104 | watanabe   |  181 |
| a101 | shunin-sat |  184 |
| a101 | shunin-sat |  300 |
| a102 | takahashi  |  205 |
+------+------------+------+

反映されている。

ビューの確認

「show tables;」

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| tb            |
| tb1           |
| tb2           |
| tb3           |
| tb_zyun       |
| tb_zyun2      |
| v1            |
| v2            |
+---------------+
mysql>desc v1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| nama  | varchar(10) | YES  |     | NULL    |       |
| tosi  | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+


ビューへの挿入


出来る場合と出来ない場合がある。

mysql>insert into v1 values('baito-isid',18);
mysql> select * from v1;
+------------+------+
| nama       | tosi |
+------------+------+
| shunin-sat |   40 |
| takahashi  |   28 |
| nakagawa   |   20 |
| watanabe   |   23 |
| nishizawa  |   35 |
| baito-isid |   18 |
+------------+------+
mysql> select * from tb1;
+------+------------+------+
| bang | nama       | tosi |
+------+------------+------+
| a101 | shunin-sat |   40 |
| a102 | takahashi  |   28 |
| a103 | nakagawa   |   20 |
| a104 | watanabe   |   23 |
| a105 | nishizawa  |   35 |
| NULL | baito-isid |   18 |
+------+------------+------+


今回はここまで。

次回は「ストアドプロシージャ」について。

おしらせ

つながり合うSNS


http://survive-sns.jp/


ぜひお気軽にご参加ください。


サーバを新たに立て、一新した「サバイブSNS2.0」を、どうぞ一度覗いてみてください。

人生の「旅の仲間」が見つかるかも知れませんよ。