投稿

[Python 100日チャレンジ] Day 76 - SQL JOINでテーブルを結合する

SQLのJOINを使って、ユーザーと注文のように複数テーブルのデータを結合する方法を学びます。

[Python 100日チャレンジ] Day 76 - SQL JOINでテーブルを結合する

JOINが必要な理由

リレーショナルデータベースでは、データを複数のテーブルに分けて保存します。JOINを使うと、関連するテーブルをつなげて取得できます。

1
2
3
SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;

主キーと外部キー

users.idのように行を識別する値を主キーと呼びます。orders.user_idのように別テーブルを参照する値は外部キーとして使われます。

LEFT JOIN

1
2
3
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

LEFT JOINは、左側のテーブルの行を残しながら結合します。注文がないユーザーも一覧に出したい場合に便利です。

JOIN結果をPythonで使う

1
2
3
4
5
6
7
8
cursor.execute("""
SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id
""")

for name, amount in cursor.fetchall():
    print(name, amount)

今日のゴール

JOINを使うと、分けて保存したデータを必要な形で組み合わせられます。リレーショナルデータベースを理解するうえで、とても重要なSQLです。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。