PostgreSQL 練習 (準備1)
前回、PostgreSQL について調べてみました。
そして、Docker を使って PostgreSQL サーバを構築し、
psql
コマンドで操作できるようになりました。
今回からは、この PostgreSQL を使って、Qiita で見つけた SQL の練習問題に取り組んでいきたいと思います。
SQL 練習問題
Qiita で見つけた SQL の練習問題というのは ↓ になります。
この記事の中では
DB Fiddleを使うとブラウザ上で簡単にSQLを実行できます。
のように書かれていますが、今回は自分で建てた PostgreSQL サーバーを使って取り組みたいと思います。
前回の記事で建てた PostgreSQL の Docker コンテナで進めていきます。
データベース作成
まずは、この練習問題用のデータベースを作成します。
PostgreSQL では、createdb
コマンドを利用して、データベースを作成することができます。
Docker を使っているので docker exec
でコマンドを実行していきます。
今回、データベースの名前はqiita_sql_questions
としました。
docker exec postgres createdb qiita_sql_questions -U postgres
これで、データベースが作成できました。
確認してみます。
PostgreSQL では、\l
でデータベース一覧を表示することができます。
一覧の中に先ほど作成したqiita_sql_questions
があると思います。
テーブル・データの準備
練習問題の記事の Schema SQL を参考に、データベースにテーブルを作成し、データを挿入していきます。
CREATE TABLE students ( id integer NOT NULL PRIMARY KEY, name varchar(255) NOT NULL, gender varchar(1) NOT NULL ); INSERT INTO students VALUES (1, '長岡 一馬', '男'), (2, '中本 知佳', '女'), (3, '松本 義文', '男'), (4, '佐竹 友香', '女'); CREATE TABLE exam_results ( student_id integer NOT NULL, subject varchar(255) NOT NULL, score bigint NOT NULL, PRIMARY KEY(student_id, subject) ); INSERT INTO exam_results VALUES (1, '国語', 30), (1, '英語', 30), (2, '国語', 70), (2, '数学', 80), (3, '理科', 92), (4, '社会', 90), (4, '理科', 35), (4, '英語', 22);
これで、テーブルが二つ (students と exam_results)が作成されました。
確認してみます。PostgreSQL では、\d
でテーブル一覧を取得することができます。
結果は以下のようになると思います。
List of relations Schema | Name | Type | Owner --------+--------------+-------+---------- public | exam_results | table | postgres public | students | table | postgres (2 rows)
また、それぞれのテーブルにはデータを挿入したので、それも確認してみます。
まず、students テーブルから確認します。
SELECT * FROM students;
結果はこんな感じです。
id | name | gender ----+-----------+-------- 1 | 長岡 一馬 | 男 2 | 中本 知佳 | 女 3 | 松本 義文 | 男 4 | 佐竹 友香 | 女 (4 rows)
続いて、exam_results テーブル。
SELECT * FROM exam_results;
student_id | subject | score ------------+---------+------- 1 | 国語 | 30 1 | 英語 | 30 2 | 国語 | 70 2 | 数学 | 80 3 | 理科 | 92 4 | 社会 | 90 4 | 理科 | 35 4 | 英語 | 22 (8 rows)
これで準備が整ったので、次回から問題を解いていきます。
参考
終わり