3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DevToxicClubAdvent Calendar 2024

Day 23

内部結合、外部結合について

Last updated at Posted at 2024-12-22

はじめに

みなさん、初めまして。DevToxicClubに所属している@72_mikanです。
普段はJavaエンジニア1年目として自身の無能さを痛感しながら働いております。

今回は、働いていてSQLを良く扱うのですが、働き始める前は簡単なことしかやってこず、外部結合と内部結合で頭が混乱したのでそちらについて自身の学習目的でまとめようかと考えています。(かなりしょぼい内容になります)

結合データ

EMPLOYYテーブル
EMPLOYEE_ID  | NAME     | POSITION_ID
-------------------------------------------------
          1  | TARO     | 1
          2  | JIRO     | 3
          3  | SAORO    | 4
POSITIONテーブル
POSITION_ID     | NAME
-------------------------------------------------
1               | 営業部
2               | 開発部
3               | 経理部

内部結合

内部結合は結合する二つのテーブルで結合条件が一致したレコードのみを結合してくれます。
例えば、上記のテーブルで役所についている社員だけ情報を取り出したいときに使います。
SQL文は以下

SELECT * FROM EMPLOYEE AS emp
INNER JOIN POSITION AS pos
ON emp.POSITION_ID = pos.POSITION_ID

これで、出力される結果が以下

EMPLOYEE_ID  | emp.NAME     | POSITION_ID  |pos.NAME
-------------------------------------------------
          1  | TARO         | 1            | 営業部
          2  | JIRO         | 3            | 経理部

左外部結合

左外部結合は内部結合とは異なり、結合条件で一致しないレコードに対しては
SQL文は以下

SELECT * FROM EMPLOYEE AS emp
LEFT OUTER JOIN POSITION AS pos
ON emp.POSITION_ID = pos.POSITION_ID

これで、出力される結果が以下

EMPLOYEE_ID  | emp.NAME     | POSITION_ID  | pos.NAME
-------------------------------------------------
          1  | TARO         | 1            | 営業部
          2  | JIRO         | 3            | 経理部
          3  | SAORO        | 4            | null

右外部結合

SQL文は以下

SELECT * FROM EMPLOYEE AS emp
RIGHT OUTER JOIN POSITION AS pos
ON emp.POSITION_ID = pos.POSITION_ID

これで、出力される結果が以下

POSITION_ID     | NAME      | 
-------------------------------------------------
1               | 営業部    | 
2               | 開発部    | 
3               | 経理部    | 

まとめ

実際、新人が実務でよく使うのは左外部結合、次に内部結合になるかと思います。
そのため、まずは、左外部結合と内部結合の違いを理解しておけばとりあえずは業務では困らないかと思います。
他にも完全会部結合、交差結合があるが現状実務で使ったことがないので今回まとめてません。(そのうちまとめるかも、、、)

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?