LAMPのお勉強日記 (10)
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 | +------+------+------+
カラムのデータすべてを修正する
「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 | +-------+------+------------+
今回はここまで。
次回はいよいよ複数のテーブルを利用して作業を行う予定。