JOINを使ったテーブルの結合
JOINを使ったテーブルの結合
データベースには、複数のテーブルを結合してデータを取得することができます。
テーブルを結合する際には、JOIN句を使用します。
JOINの種類
JOIN句には、以下のような種類があります。
INNER JOIN: 2つのテーブルの共通するデータのみを取得します。LEFT JOIN: 左側のテーブルのデータを全て取得し、右側のテーブルのデータが存在しない場合はNULLを返します。RIGHT JOIN: 右側のテーブルのデータを全て取得し、左側のテーブルのデータが存在しない場合はNULLを返します。
INNER JOINの例
以下の例では、usersテーブルとordersテーブルをINNER JOINして、ユーザーと注文の情報を取得しています。
usersテーブル
| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
ordersテーブル
| id | user_id | product |
|---|---|---|
| 1 | 1 | Apple |
| 2 | 1 | Banana |
| 3 | 2 | Orange |
SELECT users.name, orders.productFROM usersINNER JOIN ordersON users.id = orders.user_id;上記のSQL文では、usersテーブルとordersテーブルをINNER JOINして、usersテーブルのnameカラムとordersテーブルのproductカラムを取得しています。
ON句で結合条件を指定しています。
LEFT JOINの例
以下の例では、usersテーブルとordersテーブルをLEFT JOINして、ユーザーと注文の情報を取得しています。
SELECT users.name, orders.productFROM usersLEFT JOIN ordersON users.id = orders.user_id;上記のSQL文では、usersテーブルとordersテーブルをLEFT JOINして、usersテーブルのnameカラムとordersテーブルのproductカラムを取得しています。
usersテーブルのデータは全て取得され、ordersテーブルのデータが存在しない場合はNULLが返されます。
RIGHT JOINの例
以下の例では、usersテーブルとordersテーブルをRIGHT JOINして、ユーザーと注文の情報を取得しています。
SELECT users.name, orders.productFROM usersRIGHT JOIN ordersON users.id = orders.user_id;上記のSQL文では、usersテーブルとordersテーブルをRIGHT JOINして、usersテーブルのnameカラムとordersテーブルのproductカラムを取得しています。
ordersテーブルのデータは全て取得され、usersテーブルのデータが存在しない場合はNULLが返されます。
演習
以下のテーブルを作成し、INNER JOIN、LEFT JOIN、RIGHT JOINを使用してデータを取得してみましょう。
usersテーブル
| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
ordersテーブル
| id | user_id | product |
|---|---|---|
| 1 | 1 | Apple |
| 2 | 1 | Banana |
| 3 | 2 | Orange |
CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE orders ( id INTEGER PRIMARY KEY, user_id INTEGER, product TEXT);
INSERT INTO users (name) VALUES ('Alice');INSERT INTO users (name) VALUES ('Bob');
INSERT INTO orders (user_id, product) VALUES (1, 'Apple');INSERT INTO orders (user_id, product) VALUES (1, 'Banana');INSERT INTO orders (user_id, product) VALUES (2, 'Orange');