Mysqlを扱う

はじめに

リプライ以外の自分のTwitterのつぶやきを取得したくなったので、twitteroauthを扱い始めたのだが、どうせならつぶやきを全てデータベースに保存すればよいのではないか?と思い始めた今日このごろ。
今回は取得したツイートをデータベースに保存するためにまずはデータベースの使用法を学ぶこととする。

データベースとテーブルを作る

ユーザを作成したり、権限を変更したりの辺りは割愛します。もう一度やって自分がもう一回引っかかったらちゃんと書くかもしれない。
create database データベース名
create table データベース名.テーブル名(フィールド名 型, フィールド名 型)
みたいな感じ。そのうちちゃんと書く

PHPと連携する

PHPでデータベースに接続するときのまとめがとてもわかりやすいので熟読しておくこと。

また、ツイートは絵文字等が入っている可能性があるので文字コードにはutf8mb4を指定すること(これ大事)
一度設定してしまったフィールドの文字コードを変更するためのコマンドは以下の通り。

alter table テーブル名 modify フィールド名 型 character set utf8mb4;

テーブル構造はこちら


簡単にそれぞれのフィールドの説明。

  • idはツイートの固有IDで、取得がダブらないようにプライマリーキーとした。
  • usernameはアカウントのID(@ではじまるやつ)。
  • textはツイートの本文。余裕をもって256文字にしたが、URLが入ると足りないかもしれないので、今更512に増やそうかと思っている。
  • dateはツイートの日付。DATE型ではないので文字列型を使うしかなかった。
  • clientは呟いたクライアントの名前。viaだと思ってもらって差し支えない。
  • tweetedはミラーアカウントで呟いたかどうかを判断するためのフラグ。ただツイートのデータを集めるだけなら要らない。

このうちtextだけは必ずutf8mb4を文字コードに指定すること(大切なことなので二回言いました)。

mysql> desc archive;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | bigint(20)   | NO   | PRI | NULL    |       |
| username | varchar(20)  | YES  |     | NULL    |       |
| text     | varchar(256) | YES  |     | NULL    |       |
| date     | char(32)     | YES  |     | NULL    |       |
| client   | varchar(128) | YES  |     | NULL    |       |
| tweeted  | tinyint(1)   | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+