「ネコを称えるツイート」アプリで登録したユーザーやツイートが、データベース上でどのように登録されているのかが気になったので、見てみる。
RailsのデフォルトのデータベースはSQLite3である。私もSQLite3をインストールして使っている。
SQLiteのデータベース本体は、db\development.sqlite3というファイル。
データベースの中身を見るために、ターミナルでコンソールを立ち上げるコマンドを打つ。
rails dbconsole
「sqlite>」という表示になればOK。
今あるテーブルを全て表示
.tables
現時点で存在するテーブルの一覧が表示される。
テーブルの構成を表示
.schema [テーブル名]
CREATE TABLE IF NOT EXISTS "users" ( "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar DEFAULT '' NOT NULL, "encrypted_password" varchar DEFAULT '' NOT NULL, "reset_password_token" varchar, "reset_password_sent_at" datetime, "remember_created_at" datetime, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL); CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email"); CREATE UNIQUE INDEX "index_users_on_reset_password_token" ON "users" ("reset_password_token"); CREATE TABLE IF NOT EXISTS "tweets" ( "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "body" text, "user_id" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
テーブルの内容を表示
これは普通にSQLを書けばOK。
select * from users;
select * from tweets;
sqlite> select * from users; 1|a@a|$2a$12$zF.GB3qpVi51u1JFFZpby.gRSlyaoMw08yJ3Id5.h.TYkXPmSLiLm||||2021-02-07 04:40:45.542872|2021-02-07 04:47:30.286894 3|c@example.com|$2a$12$kpls5Ks4AIUoaR5MsWpsienZCFp7lJw3N39TNU7aUVkY61eTPBFBW||||2021-02-07 05:28:05.516165|2021-02-07 05:46:04.506077 4|b@b|$2a$12$ZHykJ9M0KmnKEygZpatg3esU1ZyInpOSZZ8i60pJGkyyVJm0/WF2S||||2021-02-07 13:50:32.304258|2021-02-07 13:50:32.304258 sqlite> select * from tweets; 1|一つ目|1|2021-02-07 13:31:51.360225|2021-02-07 13:31:51.360225 2|一つ目|1|2021-02-07 13:31:53.860680|2021-02-07 13:31:53.860680 3|一つ目|1|2021-02-07 13:33:28.845603|2021-02-07 13:33:28.845603 4|2つ目|1|2021-02-07 13:34:37.795933|2021-02-07 13:34:37.795933 5|3つ目|1|2021-02-07 13:34:49.656390|2021-02-07 13:34:49.656390 6|Cの投稿1つ目|3|2021-02-07 13:35:46.003803|2021-02-07 13:35:46.003803 7|ネコカワイイ!!(*'ω'*)|1|2021-02-09 15:17:09.475970|2021-02-09 15:17:09.475970 8|お風呂のドアの外で待っているところがカワイイ!|1|2021-02-09 15:18:01.856668|2021-02-09 15:18:01.856668 9|お皿を洗っていると、足にお尻を乗せてくる|4|2021-02-09 15:19:28.878144|2021-02-09 15:19:28.878144 10|ネコ、昨日の水絶対飲まない(賢い!)|4|2021-02-09 15:27:50.930072|2021-02-09 15:27:50.930072 11|そこにいるだけでカワイイ!|4|2021-02-09 15:29:08.067910|2021-02-09 15:29:08.067910
テーブルのデータを消す
テーブルのデータを消すために、正しくデータが抽出できるかをselect文で確認しておく。
これをやっておかないと、思わぬところで本来消すべきでないデータをうっかり消してしまう可能性がある。
tweetテーブルの1番目のデータを削除したいので、そのデータが正しく抽出できているかをまず確認する。
select * from tweets where id = 1;
sqlite> select * from tweets where id = 1; 1|一つ目|1|2021-02-07 13:31:51.360225|2021-02-07 13:31:51.360225
意図通りにwhere句が機能しているので、データを消す。
delete from tweets where id = 1;
sqlite> delete from tweets where id = 1; sqlite> select * from tweets; 2|一つ目|1|2021-02-07 13:31:53.860680|2021-02-07 13:31:53.860680 3|一つ目|1|2021-02-07 13:33:28.845603|2021-02-07 13:33:28.845603 4|2つ目|1|2021-02-07 13:34:37.795933|2021-02-07 13:34:37.795933 5|3つ目|1|2021-02-07 13:34:49.656390|2021-02-07 13:34:49.656390 6|Cの投稿1つ目|3|2021-02-07 13:35:46.003803|2021-02-07 13:35:46.003803 7|ネコカワイイ!!(*'ω'*)|1|2021-02-09 15:17:09.475970|2021-02-09 15:17:09.475970 8|お風呂のドアの外で待っているところがカワイイ!|1|2021-02-09 15:18:01.856668|2021-02-09 15:18:01.856668 9|お皿を洗っていると、足にお尻を乗せてくる|4|2021-02-09 15:19:28.878144|2021-02-09 15:19:28.878144 10|ネコ、昨日の水絶対飲まない(賢い!)|4|2021-02-09 15:27:50.930072|2021-02-09 15:27:50.930072 11|そこにいるだけでカワイイ!|4|2021-02-09 15:29:08.067910|2021-02-09 15:29:08.067910 sqlite>
1つ目のデータが消えていることが分かる。
コンソールの終了
終了させる場合は、.quit と打てばデータベースクライアントが停止する。