前回のjoinのレッスンはみていただけましたでしょうか?
そのレッスンではSQLiteを使っていました。
そのレッスンでもお話ししたように、SQLiteには、right join,outer joinが実装されていません。
そこで以前のレッスンでPostgreSQLの環境構築の動画と、データベースをバックアップと復元、つまりリストア0する方法について解説をしました。
キノコードのウェブサイトにレッスンで使っているデータベースをアップしました。
そのファイルを使って、データベースのリストアされましたでしょうか?
そうであれば、レッスンの準備は完璧です。
この動画では、前回のSQLiteのjoinで説明できなかったright join,outer joinを説明していきます。
▼目次
00:00 はじめに
01:34 準備
02:34 INNER JOIN
03:10 LEFT JOIN
03:57 RIGHT JOIN
05:43 OUTER JOIN
06:35 結合についてのイメージ
07:02 おわりに
▼関連動画
【SQL超入門講座】01.コース紹介 ~ SQLとは? ~ 環境構築|初心者向け
【SQL超入門講座】02.データベースのテーブルとは?
【SQL超入門講座】03.SELECT文|SQLの基本中の基本
【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法
【SQL超入門講座】05.ORDER BY|データの並び替え
【SQL超入門講座】06.GROUP BY|グルーピング、グループ化
【SQL超入門講座】07.HAVING|グループ化したデータの中からデータ抽出
【SQL超入門講座】08.JOIN|テーブルの結合(INNER JOIN/LEFT JOIN)
【SQL超入門講座】09.PostgreSQLの環境構築|MacとWindowsで解説!
【SQL超入門講座】10.PythonとPostgreSQLの接続
【SQL超入門講座】11.データベースのバックアップと復元
▼書き起こし
まず、テーブルを2つ用意します。
冒頭でもお伝えしましたが、キノコードのウェブサイトにあるdumpファイルを使ってリストアすればテーブルがあるはずです。
リストアすると、1つは、test_table01というテーブルと、test_table02というテーブルがあります。
1つ目はtest_table01というテーブルです。
氏名、出席番号、数学の点数が記録されています。
2つめはtest_table02というテーブルです
こちらには、氏名、出席番号、国語の点数が記録されています。
“`SQL
SELECT *
FROM test_table01 AS A
INNER JOIN test_table02 AS B
ON A.氏名 = B.氏名
“`
まず、INNER JOINのやりかたです。
INNER JOINはこのように書きましたよね。
test_table01とtest_table02を、氏名のカラムをキーに内部結合をしました。
つまり、一致するレコードのみ抽出することができます。
実行します。
FROMに書いたテーブルであるtest_table01が左側にきて、
INNER JOINに書いたtest_table02が右側にきています。
これはJOINでの基本ルールなので覚えておきましょう。
そして、一致するレコードのみ抽出できています。
“`SQL
SELECT *
FROM test_table01 AS A
LEFT JOIN test_table02 AS B
ON A.氏名 = B.氏名
“`
LEFT JOINはこうでしたよね。
test_table01とtest_table02と、左外部結合です。
今回も、FROMに書いたテーブルであるtest_table01が左側にきて、
LEFT JOINに書いたtest_table02が右側にきています。
LEFT JOINなので、左側のテーブルが基準となります。
つまり、FROMの部分のtest_table01です。
左側のテーブルはすべて表示されて、右側のテーブルは結合されたもののみが表示されます。
以上が、復習です。
(続く)
▼書き起こしブログ
(準備中)
▼自己紹介
ブログに自己紹介を書いております。
▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook : https://www.facebook.com/%E3%82%AD%E3…
Website : https://kino-code.com/
#SQL #データベース #postgreql #テーブル結合 #JOIN #SQLite
コメント
親切な説明、本当にありがとうございます。日本語でデータサイエンス勉強するのもかなり面白いです!