ガードブロッキング的ブログ

mysqlのメモ7

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等でも使えるので是非覚えておきたい。

注意事項

モバイルバージョンを終了