1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

テーブル結合についてまとめてみた

1
Posted at

はじめに

SQLでテーブル結合する動作についてまとめてみました。

サンプルテーブル

以下のテーブルを用いて説明していく

employeeテーブル

id name
1 鈴木
2 高橋
3 木村
4 田口

departmentテーブル

id department_name
1 開発部
2 営業部
5 人事部

データ流し込み用

オンラインのSQLエディタなどを使いお試しください

create table employee(id integer, name varchar(100));
insert into employee(id, name) values(1, "鈴木");
insert into employee(id, name) values(2, "高橋");
insert into employee(id, name) values(3, "木村");
insert into employee(id, name) values(4, "田口");


create table department(id integer, department_name varchar(100));
insert into department(id, department_name) values(1, "開発部");
insert into department(id, department_name) values(2, "営業部");
insert into department(id, department_name) values(5, "人事部");

INNER JOIN -内部結合-

INNER JOINは、結合するテーブルのデータのうち、条件に指定したカラムの値が一致するデータのみを結合します。

例
SELECT * FROM テーブルA INNER JOIN テーブルB ON 結合する条件 WHERE 抽出する条件;

サンプルテーブルでデータ抽出をする

SELECT * FROM employee INNER JOIN department ON employee.id = department.id;
抽出結果
id	name	id	department_name
1	鈴木	    1	開発部
2	高橋	    2	営業部

idが一致しないものは除外される

LEFT OUTER JOIN -左外部結合-

LEFT OUTER JOINは、左側のテーブルを全て取り出し、その右側のテーブルのうち、条件に指定したカラムの値が一致するデータのみ結合します。なお、右側に結合するテーブルに一致するカラムが無い場合は、NULLが入ります。

例
-- テーブルAが左側のテーブル、テーブルBが右側のテーブルに当たる
SELECT * FROM テーブルA LEFT OUTER JOIN テーブルB ON 結合する条件 WHERE 抽出する条件;

サンプルテーブルでデータ抽出をする

SELECT * FROM employee LEFT OUTER JOIN department ON employee.id = department.id;
抽出結果
id	name	id	    department_name
1	鈴木	    1	    開発部
2	高橋	    2	    営業部
3	木村	    NULL	NULL
4	田口	    NULL	NULL

employeeテーブルのデータは全て出力されているが、idが一致しない4 田口のデータにはnullが入る

RIGHT OUTER JOIN -右外部結合-

RIGHT OUTER JOIN は、右側のテーブルを全て取り出し、その左側のテーブルのうち、条件に指定したカラムの値が一致するデータのみ結合します。なお、左側に結合するテーブルに一致するカラムが無い場合は、NULLが入ります。

例
-- テーブルBが右側のテーブル、テーブルAが左側のテーブルに当たる
SELECT * FROM テーブルA LEFT OUTER JOIN テーブルB ON 結合する条件 WHERE 抽出する条件;

サンプルテーブルでデータ抽出をする

SELECT * FROM employee RIGHT OUTER JOIN department ON employee.id = department.id;
抽出結果
id	    name	id	department_name
1	    鈴木	    1	開発部
2	    高橋	    2	営業部
NULL	NULL	5	人事部

参考したもの

【INNER JOIN, LEFT JOIN , RIGHT JOIN】テーブル結合の挙動をまとめてみた【SQL】
SQLの基本とも言えるテーブル結合、その種類と使い方について解説

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?