[MYSQL] JOIN

potato·2024년 3월 29일

DB

목록 보기
1/3
post-thumbnail

1. JOIN 개요

JOIN은 두 개 이상의 테이블을 연결하여 데이터를 결합하는 SQL 연산입니다. 테이블 간의 연결은 공통 컬럼을 기준으로 이루어집니다. JOIN을 사용하면 여러 테이블에 분산된 데이터를 하나의 테이블처럼 조회할 수 있습니다.


2. JOIN 종류

JOIN에는 다양한 종류가 있으며, 각각 조금씩 다른 방식으로 테이블을 연결합니다.

2.1 INNER JOIN (내부 조인)

INNER JOIN은 두 테이블의 조인 조건을 만족하는 레코드만을 반환합니다. 즉, 두 테이블 모두에서 일치하는 레코드만 출력됩니다.

예시:

# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 INNER JOIN

SELECT *
FROM 직원
INNER JOIN 부서 ON 직원.부서_ID = 부서.ID;

결과:

직원 이름부서 이름
홍길동개발부
김철수영업부

2.2 LEFT JOIN (왼쪽 조인)

LEFT JOIN은 왼쪽 테이블의 모든 레코드를 반환하며, 오른쪽 테이블에서 조인 조건을 만족하는 레코드만 결합합니다. 즉, 왼쪽 테이블에만 존재하는 레코드도 출력됩니다.

예시:

# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 LEFT JOIN

SELECT *
FROM 직원
LEFT JOIN 부서 ON 직원.부서_ID = 부서.ID;

결과:

직원 이름부서 이름
홍길동개발부
김철수영업부
박지영(null)

2.3 RIGHT JOIN (오른쪽 조인)

RIGHT JOIN은 오른쪽 테이블의 모든 레코드를 반환하며, 왼쪽 테이블에서 조인 조건을 만족하는 레코드만 결합합니다. 즉, 오른쪽 테이블에만 존재하는 레코드도 출력됩니다.

예시:

# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 RIGHT JOIN

SELECT *
FROM 직원
RIGHT JOIN 부서 ON 직원.부서_ID = 부서.ID;

결과:

직원 이름부서 이름
홍길동개발부
김철수영업부
(null)인사부

2.4 FULL JOIN (외부 조인)

FULL JOIN은 왼쪽 테이블과 오른쪽 테이블의 모든 레코드를 반환합니다. 즉, 두 테이블 중 하나라도 조인 조건을 만족하는 레코드는 모두 출력됩니다.

예시:

# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 FULL JOIN

SELECT *
FROM 직원
FULL JOIN 부서 ON 직원.부서_ID = 부서.ID;

결과:

직원 이름부서 이름
홍길동개발부
김철수영업부
박지영(null)
(null)인사부

3. JOIN 조건

JOIN은 ON 절을 사용하여 조인 조건을 지정합니다. ON 절에는 두 테이블의 공통 컬럼을 비교하는 식을 작성합니다.

예시:

# 직원 테이블과 부서 테이블을 부서 ID와 부서 이름을 기준으로 JOIN

SELECT *
FROM 직원
JOIN 부서 ON 직원.부서_ID = 부서.ID AND 직원.부서_name = 부서.name;

**4. JOIN 활용

JOIN은 다양한 데이터 분석 작업에 활용될 수 있습니다.

  • 다중 테이블 데이터 조회: 여러 테이블에 분산된 데이터를 하나의 테이블처럼 조회할 수 있습니다.
  • 데이터 집합 간 관계 분석: 테이블 간의 관계를 분석하여 데이터에 대한 통찰력을 얻을 수 있습니다.
profile
null

0개의 댓글