[DB] 테이블 JOIN

소이뎁·2023년 11월 23일
0

Database

목록 보기
5/7
post-thumbnail

📍 JOIN

  • 데이터베이스에서 두 개 이상의 테이블을 결합하여 하나의 결과 집합을 생성하는 작업이다.
  • INNER JOIN, OUTER JOIN, CROSS JOIN이 있다.
  • JOIN을 명시적으로 지정하지 않으면, 기본적으로 INNER JOIN이 수행된다.

📍 INNER JOIN

  • 두 테이블 간의 일치하는 행만을 반환한다.
// INNER JOIN 명시
SELECT A.*, B.*
FROM 테이블1 AS A
INNER JOIN 테이블2 AS B
ON A.id = B.id;

// JOIN을 명시하지 않은 경우 -> INNER JOIN
SELECT A.*, B.*
FROM 테이블1 AS A
JOIN 테이블2 AS B
ON A.id = B.id;

📍 OUTER JOIN

  • LEFT (OUTER) JOIN: 왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블과 일치하는 행이 있는 경우 해당 행을 결과에 포함, 일치하지 않는 경우에는 NULL 값이 들어간다.
  • RIGHT (OUTER) JOIN: 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블과 일치하는 행이 있는 경우 해당 행을 결과에 포함, 일치하지 않는 경우에는 NULL 값이 들어간다.
  • FULL OUTER JOIN: 두 테이블의 모든 행을 결과에 포함하며, 일치하지 않는 경우에는 NULL 값이 들어간다. MySQL에서는 FULL OUTER JOIN을 직접적으로 지원하지 않으므로 LEFT (OUTER) JOIN과 RIGHT (OUTER) JOIN을 UNION으로 결합하여 구현한다.
// LEFT (OUTER) JOIN
SELECT A.*, B.*
FROM 테이블1 AS A
LEFT JOIN 테이블2 AS B
ON A.id = B.id;

// RIGHT (OUTER) JOIN
SELECT A.*, B.*
FROM 테이블1 AS A
RIGHT JOIN 테이블2 AS B
ON A.id = B.id;

// FULL OUTER JOIN
SELECT A.*, B.*
FROM 테이블1 AS A
LEFT JOIN 테이블2 AS B
ON A.id = B.id

UNION

SELECT A.*, B.*
FROM 테이블1 AS A
RIGHT JOIN 테이블2 AS B
ON A.id = B.id;

📍 CROSS JOIN

  • 두 테이블 간의 모든 가능한 조합을 반환한다.
// CROSS JOIN
SELECT A.*, B.*
FROM 테이블1 AS A
CROSS JOIN 테이블2 AS B;

0개의 댓글