とりあえずAKBメンバーのデータを30件ずつ保存しました。 データベースには1032件の呟きが保存されています。 テーブルの中身はこんな感じです。
id,created_data,name,tweet,count_tweets,count_follows,count_followers,count_favolites,count_lists,users_favorites,retweet,favorite,datesp 1,"2018-07-02 22:05:22",48_asainanami,”テキストの内容”,93,91,10037,81,264,81,175,789,"2018-07-03 08:41:51"
今日はこのテーブルを使ってSQLを学んで行きたいと思います。
SQL
投稿者を指定
これは簡単ですね。whereの後ろにnameで指定すればいいだけです。
SELECT * FROM tweet WHERE name = '48_asainanami';
行数を数える
行数を数えるにはCount関数を使うらしいです。投稿者を48_asainanamiに指定して行数を数えてみます。
SELECT COUNT(*) FROM tweet WHERE name = '48_asainanami';
実行結果
30
時期を指定する
散々苦労したcreated_dataを使用します。 時期を指定する場合はBETWEEN ANDを使う。
select * from tweet where created_data between '2018-06-01' and '2018-06-30' and favorite >= 900;
ついでに条件の追加もANDで行う、条件のうちどちらかでも満たせばいいものはORでつなぐ。
何日から先を検索する
created_dataを大なり小なりで比較させて出します。 基本的に文字列はすべてシングルクォートで囲みます。
select * from tweet where created_data <= '2018-06-01';
文字検索
LIKEを使う
select * from tweet where tweet LIKE '%アイドル%';
%の入れ方で検索方法が変わるので注意。この%は0文字以上の任意の文字を表している。 ’%hoge’:hogeから始まる文章を検索する ‘hoge%’:hogeで終わる文章を検索する ‘%hoge%’:hogeを含む文章を検索する
任意の文字列を検索する
INを使います。IDなどを複数検索する時はこれを使う。
select * from tweet where id in (1,5,8);
並び替え
ORDER BY hoge ASC/DESCを使う
select * from tweet where id in (1,5,8) order by tweet ASC;
ASCが昇順、DESCが降順を指定する
サブクエリ
SELECTの中にSELECTを入れることができる、これをサブクエリというらしいです。 いい例が思い浮かばず実行は保留。
長さを測る
length(tweet)を使って、テキスト量を数えることができる。
select 'テキスト量', length(tweet) from tweet;
実践
7月3日分をデータベースに入れましたので、摘出してみます。
select Count(*) from tweet where created_data >= '2018-07-03';
実行結果
73
select TWEET from tweet where created_data >= '2018-07-03';
実行結果
TWEET "あああああああ相手のゴール綺麗に、、選手の皆さんお疲れ様でした!✨✨✨初めてこんな時間まで起きてスポーツ観戦しました!あー1限頑張るぞ!!!!" "だ悔しい、、、追いつかれたぁ""あれ、入っちゃうかー、、、、、うーん” (中略)
ということで、本日は73件の投稿でした。 形容詞を見てみますと、日本代表選手を見ているメンバーが多かったみたいですね。
'悔しい': 4, 'すごい': 4, 'ない': 4, 'かっこよい': 3, 'いい': 3, 'よい': 2, '良い': 2, '高い': 2, '楽しい': 2, '凄い': 1, '難しい': 1, 'たのしい': 1, 'よろしい': 1, '強い': 1, '暑い': 1, '涼しい': 1, '小さい': 1, '近い': 1, 'かわいい': 1, 'ゆるい': 1, '嬉しい': 1, '懐かしい': 1, '可愛い': 1, 'やばい': 1})
今日勉強したこと
-基礎的なSQL文の書き方