AtomというテキストエディタのターミナルでMySQLバージョン5.7というデータベースを起動させていただいて、
mysql> CREATE DATABASE bookstore;
という上記のコマンドでbookstore
というデータベースを作らせていただいて、
mysql> show databases;
という上記のコマンドで下記のようなデータベース一覧を表示させました。
+--------------------+ | Database | +--------------------+ | information_schema | | bookstore | | kadaidb | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.01 sec)
あと
mysql> USE bookstore;
というコマンドでbookstore
というデータベースを選択させていただきました。
それからbookstore
データベースにchapters
テーブルを作成するSQLファイル(mysql-lesson/create_table_bookstore_chapters.sql
)を作成させて頂いて、
mysql> show tables;
というコマンドで
+---------------------+ | Tables_in_bookstore | +---------------------+ | chapters | +---------------------+ 1 rows in set (0.01 sec)
chapters
テーブルを確認させて頂きました。
それから
mysql> INSERT INTO bookstore.chapters (number, title, book_id) VALUES (1, "MySQLとは", 1); mysql> INSERT INTO bookstore.chapters (number, title, book_id) VALUES (2, "テーブルとは", 1); mysql> INSERT INTO bookstore.chapters (number, title, book_id) VALUES (3, "CRUDとは", 1); mysql> INSERT INTO bookstore.chapters (number, title, book_id) VALUES (1, "Rubyとは", 3); mysql> INSERT INTO bookstore.chapters (number, title, book_id) VALUES (2, "変数とは", 3); mysql> INSERT INTO bookstore.chapters (number, title, book_id) VALUES (3, "関数とは", 3);
というコマンドを入力させて頂いて、
mysql> SELECT * FROM chapters; +----+--------+--------------------+---------+---------------------+ | id | number | title | book_id | created_at | +----+--------+--------------------+---------+---------------------+ | 1 | 1 | MySQLとは | 1 | 2021-03-08 23:01:34 | | 2 | 2 | テーブルとは | 1 | 2021-03-08 23:02:32 | | 3 | 3 | CRUDとは | 1 | 2021-03-08 23:13:31 | | 4 | 1 | Rubyとは | 3 | 2021-03-08 23:22:03 | | 5 | 2 | 変数とは | 3 | 2021-03-08 23:23:29 | | 6 | 3 | 関数とは | 3 | 2021-03-08 23:24:23 | +----+--------+--------------------+---------+---------------------+
というレコードを表示させて頂きました。
それからbooks
テーブルを作らせて頂いて、
+---------------------+ | Tables_in_bookstore | +---------------------+ | books | | chapters | +---------------------+ 2 rows in set (0.00 sec)
下記のようなレコードを作成させて頂きました。
mysql> SELECT * FROM books; +----+----------------------+-------+---------------------+ | id | title | price | created_at | +----+----------------------+-------+---------------------+ | 1 | はじめてのMySQL | 2980 | 2021-03-08 21:50:43 | | 2 | はじめてのRuby | 1980 | 2021-03-08 21:56:55 | | 3 | はじめてのHTML | 1200 | 2021-03-08 22:03:29 | +----+----------------------+-------+---------------------+ 3 rows in set (0.00 sec)
あと、
GROUP BY
句を用いて
mysql> SELECT * FROM chapters GROUP BY book_id;
というコマンドを入力させて頂きましたが、
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains n onaggregated column 'bookstore.chapters.id' which is not functionally dependent on column s in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
というエラーが出てしまい、chapters
カラムをGROUP BY
句で同じbook_idのグループとして1つのレコードにすることができませんでした。
しかし、
mysql> SELECT books.title, COUNT(*) AS number_of_chapters FROM chapters INNER JOIN books ON books.id = chapters.book_id GROUP BY book_id;
というコマンドを入力させて頂いたら、
+----------------------+--------------------+ | title | number_of_chapters | +----------------------+--------------------+ | はじめてのMySQL | 3 | | はじめてのHTML | 3 | +----------------------+--------------------+ 2 rows in set (0.00 sec)
上記のレコードのように、自分で作ったテーブル(chaptersとbooks)を結合して
chaptersカラムとbooksカラムをGROUP BY
句で同じグループとして1つのレコードにすることができました。