mysqlのメモ7
データのバックアップと復元
dump
バックアップする。
mysqldump -u dbuser001 -p blog_app > blog_app.dump.sql
復元は普通にsqlを読み込む(dump)の方
mysql -u dbuser001 -p blog_app < blog_app.dump.sql
複数のテーブルを準備する
さっきのblog_app.sqlのテーブルに追記
drop table if exists posts; create table posts( id int not null primary key auto_increment, user_id int not null, title varchar(255), body text, created datetime, modified datetime );
insert into posts(id,user_id,title,body,created,modified) value (null,1,'こんにちは!','今日からブログはじめました!よろしくです!','2011-05-01 10:55:00','2011-05-05 18:02:00'); insert into posts(id,user_id,title,body,created,modified) value (null,1,'ランチ','食べ過ぎちゃいましたよー','2011-05-04 10:02:00','2011-05-12 10:01:00'); insert into posts(id,user_id,title,body,created,modified) value (null,2,'ブログ','みんなもやっているからやってみる!','2011-03-01 10:05:00','2011-03-02 10:03:00'); insert into posts(id,user_id,title,body,created,modified) value (null,2,'Google','なんかプラスっやつがあるの?','2011-03-02 10:00:00','2011-04-02 10:08:00'); insert into posts(id,user_id,title,body,created,modified) value (null,3,'さてはて','どこから始めるべきですかね?','2011-04-21 15:00:00','2011-04-22 17:00:00'); insert into posts(id,user_id,title,body,created,modified) value (null,3,'今日は!','大変でしたよ。いろいろ。','2011-05-02 14:00:00','2011-05-10 15:00:00'); insert into posts(id,user_id,title,body,created,modified) value (null,3,'夜!','さーて、呑みにいくぜー。','2011-05-22 13:00:00','2011-05-22 13:00:00');
でusers(前回作成)とposts(今回作成)の二つのテーブルが読み込まれた。
複数のテーブルからselectする
select users.name, posts.title from users,posts where users.id = 1 and users.id = posts.user_id;
内訳
users.name, posts.title from users,post
usersテーブルのnameとpostsテーブルのtitleをusersとpostsテーブルから選べ
where users.id = 1 and users.id = posts.user_id
条件
usersのidが1でusersのidとpostsのuser_idが同じ
ということ。
条件を指定しないと無駄なレコードが表示されまくる。
条件を組み合わせてselectする
select posts.title,users.name,posts.created from posts,users where users.id = posts.user_id order by posts.created desc;
表示したいもの
title,name,created
条件
idとuser_idが同じものを降順に。
group by
select users.name,count(posts.id) from users,posts where users.id = posts.user_id group by users.id;
表示したいもの
nameとposts.idの数え
count(posts.id)はposts.idをcountした数字
条件
idとuser_idが同じものをidごとにまとめたもの。
この場合idとnameは対になっているのでnameでも同様の結果になる。
ドットインストール終わり
mysqlの文はphpmyadmin等でも使えるので是非覚えておきたい。
注意事項
- 自分用の覚書です。
- 自分が後から読んで理解できる程度にはしょったりまとめたりしています。
- 後で誤りに気付いた時は随時訂正しています。
- 「ドットインストール」で勉強したのでそれらをなぞっています。