【SQL】結合まとめ

JOIN(INNER JOIN)

両テーブルに存在するデータのみ出力

--ONを使用
SELECT * FROM 社員マスタ A
  JOIN 資格情報 B ON A.社員コード = B.社員コード

--USINGを使用
SELECT * FROM 社員マスタ
  JOIN 資格情報 USING(社員コード)

--または
SELECT * FROM 社員マスタ A, 資格情報 B WHERE A.社員コード = B.社員コード

f:id:vist764:20200503164529p:plain
f:id:vist764:20200503164611p:plain

LEFT JOIN(LEFT OUTER JOIN)

左側のテーブルはすべて、右側のテーブルはキーが一致するものだけ出力

SELECT * FROM 社員マスタ A
  LEFT JOIN 資格情報 B ON A.社員コード = B.社員コード

f:id:vist764:20200503164150p:plain
f:id:vist764:20200503163514p:plain

RIGHT JOIN(RIGHT OUTER JOIN)

右側のテーブルはすべて、左側のテーブルはキーが一致するものだけ出力

SELECT * FROM 社員マスタ A
  RIGHT JOIN 資格情報 B ON A.社員コード = B.社員コード

f:id:vist764:20200503165229p:plain
f:id:vist764:20200503165305p:plain

FULL JOIN

両テーブルのデータをすべて出力

SELECT * FROM 社員マスタ A
  FULL JOIN 資格情報 B ON A.社員コード = B.社員コード

f:id:vist764:20200503165908p:plain
f:id:vist764:20200503165556p:plain

CLOSS JOIN

左側のテーブル一行ごとに、右側のテーブルすべてを出力

--Oracleでは使用不可
SELECT * FROM 社員マスタ CROSS JOIN 資格情報

--Oracleはこっちを使う
SELECT * FROM 社員マスタ ,資格情報

f:id:vist764:20200503220715p:plain
f:id:vist764:20200503220908p:plain