JOIN이란?
JOIN은 여러 테이블에 나눠져 있는 데이터를 하나의 결과로 조회하기 위해 사용하는 문법이다.
실무에서는
- 회원 정보 + 주문 정보
- 사원 정보 + 부서 정보
처럼 두 개 이상 테이블을 연결해서 조회하는 경우가 대부분이다.
JOIN이 필요한 이유?
JOIN 없이 조회하면 테이블 간 관계를 표현할 수 없음. 데이터 중복 / 누락이 발생함
JOIN을 사용하면 관계있는 데이터만 정확히 조회 정규화된 테이블 구조를 그대로 유지
1. INNER JOIN
◆ 두 테이블에 모두 존재하는 데이터만 조회
SELECT 컬럼
FROM 테이블 A
INNER JOIN 테이블 B
ON A.컬럼 = B.컬럼;
※ 예제
SELECT A.EMP_ID
, A.EMP_NAME
, B.DEPT_NAME
FROM EMP A
INNER JOIN DEPT B
ON A.DEPT_ID = B.DEPT_ID;
☞ 부서가 없는 사원은 조회되지 않음
2. LEFT OUTER JOIN
◆ 왼쪽 테이블 기준으로 전부 조회
- 오른쪽 테이블에 데이터가 없어도 조호됨
- 없는 값은 NULL
SELECT 컬럼
FROM 테이블 A
LEFT JOIN 테이블 B
ON A.컬럼 = B.컬럼;
※ 예제
SELECT A.EMP_NAME
, B.DEPT_NAME
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPT_ID = B.DEPT_ID;
☞ 부서가 없는 사원도 조회됨 ( DEPT_NAME = NULL )
3. RIGHT OUTER JOIN
◆ 오른쪽 테이블 기준으로 전부 조회
SELECT A.EMP_NAME
, B.DEPT_NAME
FROM EMP A
RIGHT JOIN DEPT B
ON A.DEPT_ID = B.DEPT_ID;
▲ 실무에서는 LEFT JOIN을 더 많이 사용
4. WHERE 조건과 JOIN 조건의 차이
★ 잘못된 예
SELECT *
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPT_ID = B.DEPT_ID
WHERE B.DEPT_NAME = '영업부';
☞ 결과적으로 INNER JOIN처럼 동작
※ 올바른 예
SELECT *
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPT_ID = B.DEPT_ID
AND B.DEPT_NAME = '영업부';
☞ JOIN 조건은 ON절 AND
5. JOIN 사용 시 자주 하는 실수
◆ ON 조건 누락 ㅡ 카티션 곱( CROSS JOIN ) 발생, 데이터 폭발
◆ WHERE 조건의 위치 실수 ㅡ OUTER JOIN 의미 사라짐
◆ 별칭(Alias) 미사용 ㅡ 컬럼 구분 안됨, 가독성 안 좋음
마무리
JOIN은 여러 테이블로 분리된 데이터를 하나의 결과로 연결해 주는 오라클 SQL 핵심 문법입니다. INNER JOIN으로 기본적인 테이블 관계를 이해하고 LEFT OUTER JOIN을 활용하여 데이터 누락 없이 조회하는 쿼리를 작성할 수 있다. 실무에서는 기본 테이블이 많으면 몇십 개가 되니 JOIN에 대해 개념을 바로잡아야 할 거 같다. 오늘은 기본적인 JOIN을 다뤘다 특히 JOIN 조건 ON 절과 AND 절 이것과 WHERE 조건의 위치를 정확히 구분하지 않으면 다른 의도로 나오니깐 조심하도록 하자. 감사합니다. (_ _)
'오라클' 카테고리의 다른 글
| [오라클] WHERE 조건절 완벽 정리 (0) | 2025.12.30 |
|---|---|
| [오라클] SELECT 문법 완벽 정리 ( 기본부터 실무까지 ) (0) | 2025.12.29 |
| [오라클] COUNT / SUM / AVG 집계 함수 완벽 정리 (0) | 2025.12.26 |
| [오라클] GROUP BY 문법 완벽 정리 ( ORA-00979: GROUP BY 표현식이 아닙니다 ) (0) | 2025.12.25 |
| [오라클] CASE WHEN 문법 완벽 정리 ( 다중 CASE WHEN 정리 ) (0) | 2025.12.24 |