reponの忘備録

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

LAMPのお勉強日記 (10)

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 |
+------+------+------+
カラムのデータすべてを修正する

「update [テーブル名] set [カラム名]=[設定する値];」

ex)新しくカラムを作り、そこにデータを入れてみる
mysql>alter table tb1 add bikou varchar(10);
mysql>update tb1 set bikou='特記無し';
mysql>select * from tb1;
+------+------+------+----------+
| bang | uria | tuki | bikou    |
+------+------+------+----------+
| 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 | 特記無し |
+------+------+------+----------+
条件に一致するレコードだけ修正する

「update [テーブル名] set [カラム名]=[設定する値]; where [条件];」」

ex)100件以上だけ「優秀」
mysql>update tb1 set bikou='優秀' where uria>=100;
mysql>select * from tb1;
+------+------+------+----------+
| bang | uria | tuki | bikou    |
+------+------+------+----------+
| 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 | 特記無し |
+------+------+------+----------+
並べ替えて修正する

たとえば、カラム「uria」の下位3件だけ、カラム「bikou」を「がんばれ」と修正することにします。

mysql>update tb1 set bikou='がんばれ' order by uria limit 3;
mysql>select * from tb1;
+------+------+------+----------+
| bang | uria | tuki | bikou    |
+------+------+------+----------+
| 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 | 特記無し |
+------+------+------+----------+
カラム「bikou」を削除し、元のテーブルに戻す
mysql>alter table tb1 drop bikou;


条件に一致したレコードをコピー


「create table [新しいテーブル名] select * from [元のテーブル名] where [条件];」

ex)
mysql>create table tb1_a101 select * from tb1 where bang='a101';
mysql>select * from tb1_a101;
+------+------+------+
| bang | uria | tuki |
+------+------+------+
| a101 |  184 |    4 |
| a101 |  300 |    5 |
+------+------+------+


※すでに存在するテーブルに追加する場合には、
「insert into [新しいテーブル名] select * from [元のテーブル名] where [条件];」

順番に並べてコピーする
ex)カラム「uria」の下位4つを降順に並べてコピーする
mysql>create table tb1_2to5 select * from tb1 order by uria desc limit 4 offset 1;
mysql>select * from tb1_2to5;
+------+------+------+
| bang | uria | tuki |
+------+------+------+
| a102 |  205 |    6 |
| a101 |  184 |    4 |
| a104 |  181 |    4 |
| a103 |  101 |    4 |
+------+------+------+


条件に一致したレコードを削除する

準備
mysql>create table tb2_1 select * from tb2;
mysql>select * from tb2_1;
+------+-----------+------+
| bang | nama      | tosi |
+------+-----------+------+
| a101 | sato      |   40 |
| a102 | takahashi |   28 |
| a103 | nakagawa  |   20 |
| a103 | watanabe  |   23 |
| a103 | nishizawa |   35 |
| a104 | kato      | NULL |
+------+-----------+------+
条件に一致したレコードを削除

「delete from [テーブル名] where [条件];」

ex)カラム「tosi」の30未満のテーブルを削除する
mysql>delete from tb2_1 where tosi<30;
mysql>select * from tb2_1;
+------+-----------+------+
| bang | nama      | tosi |
+------+-----------+------+
| a101 | sato      |   40 |
| a103 | nishizawa |   35 |
| a104 | kato      | NULL |
+------+-----------+------+
準備
mysql>create table tb1_1 select * from tb1;
mysql>select * from tb1_1;
+------+------+------+
| 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 |
+------+------+------+
条件に一致したレコードを削除−並べて削除
ex)カラム「uria」を降順に並べて、上位4つのレコードを削除する
mysql>delete from tb1_1 order by uria desc limit 4;
mysql>select * from tb1_1;
+------+------+------+
| bang | uria | tuki |
+------+------+------+
| a103 |  101 |    4 |
| a102 |   54 |    5 |
| a103 |   17 |    5 |
| a104 |   93 |    5 |
| a103 |   12 |    6 |
| a107 |   87 |    6 |
+------+------+------+
条件に一致したレコードを抽出−日付
ex)テーブルの作成
mysql>select * from tb3;
+---------+------+------------+
| a       | b    | c          |
+---------+------+------------+
| higashi |  200 | 1999-08-08 |
| nishi   |  500 | 2006-06-15 |
| minami  |  100 | 1998-02-23 |
| kita    |  400 | 2007-08-08 |
+---------+------+------------+
ex)今より5年前以前のレコードだけを抽出する
mysql>create table new_tb3 select * from tb3 where c>NOW() - interval 5 year;
mysql>select * from new_tb3;
+-------+------+------------+
| a     | b    | c          |
+-------+------+------------+
| nishi |  500 | 2006-06-15 |
| kita  |  400 | 2007-08-08 |
+-------+------+------------+


今回はここまで。

次回はいよいよ複数のテーブルを利用して作業を行う予定。

おしらせ

つながり合うSNS


http://survive-sns.jp/


メンバー募集中です!


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