SQLD 시험 대비

SQLD 표준 조인

_김영인 2026. 2. 25. 03:17

 

1. 표준 조인(ANSI JOIN)이란?

 

과거에는 WHERE 절에 조인 조건을 작성했다.

SELECT *
FROM A, B
WHERE A.id = B.id;

 

하지만 이 방식은

  • 가독성이 떨어지고
  • 조인 조건과 필터 조건이 섞이며
  • 유지보수성이 나쁘다

그래서 등장한 것이 ANSI 표준 조인 문법이다.

SELECT *
FROM A
JOIN B ON A.id = B.id;

 

ANSI JOIN 장점

  • 조인 조건이 명확히 분리됨
  • 가독성 향상
  • 실무 표준 방식
  • DBMS 호환성 우수

 

2. INNER JOIN (교집합)

 

개념

두 테이블의 공통 데이터만 조회

벤다이어그램으로 보면 교집합 부분만 출력.

A ∩ B

문법

SELECT *
FROM A
INNER JOIN B
ON A.id = B.id;

특징

  • 조인 조건이 일치하는 행만 반환
  • NULL은 제외
  • 가장 많이 사용하는 조인

실무 예

회원과 주문이 있을 때 → 실제로 주문한 회원만 조회


 

3. OUTER JOIN (합집합 기반 확장)

 

INNER JOIN은 교집합만 보여준다.

OUTER JOIN은 한쪽 테이블을 기준으로 모두 보여준다.

 

1) LEFT OUTER JOIN

 

개념

왼쪽 테이블은 전부 보여주고 오른쪽은 매칭되는 것만

A 전체 + (A∩B)

 

문법

SELECT *
FROM A
LEFT OUTER JOIN B
ON A.id = B.id;

 

특징

  • A 테이블은 모두 출력
  • 매칭 안 되면 B는 NULL

실무 예

회원 목록 전체 조회 → 주문 없는 회원도 포함

 

2) RIGHT OUTER JOIN

 

오른쪽 테이블 기준으로 모두 출력

B 전체 + (A∩B)
SELECT *
FROM A
RIGHT OUTER JOIN B
ON A.id = B.id;

실무에서는 LEFT JOIN을 더 많이 사용한다. RIGHT JOIN은 가독성 때문에 선호되지 않는 편이다.

 

3) FULL OUTER JOIN

 

양쪽 모두 포함

A ∪ B
SELECT *
FROM A
FULL OUTER JOIN B
ON A.id = B.id;
  • 양쪽에만 존재하는 데이터도 모두 출력
  • 매칭 안되면 NULL 발생

 

4. NATURAL JOIN

 

개념

 

같은 이름의 컬럼을 자동으로 조인

SELECT *
FROM A
NATURAL JOIN B;

 

특징

  • ON 절 생략
  • 같은 이름의 컬럼 자동 매칭
  • 위험함 (컬럼 추가되면 조인 깨질 수 있음)

실무에서는 거의 사용하지 않는다.


 

5. CROSS JOIN (Cartesian Product)

 

개념

 

조인 조건 없이 모든 조합 생성

A × B
SELECT *
FROM A
CROSS JOIN B;

 

결과 행 수

A 행 수 × B 행 수

 

예: A 3개 × B 4개 → 결과 12개

실무 사용 예

  • 조합 생성
  • 테스트 데이터 생성
  • 경우의 수 계산

 

6. 조인 실행 순서 (매우 중요)

 

SQL은 작성 순서대로 실행되지 않는다.

 

실제 실행 순서:

1. FROM
2. JOIN
3. WHERE
4. GROUP BY
5. HAVING
6. SELECT
7. ORDER BY

이 순서를 이해 못하면 GROUP BY / HAVING에서 오류 발생한다.


 

7. GROUP BY / HAVING 정리

 

기본 집계

SELECT 회원번호,
       MAX(주문금액) AS 최고주문금액,
       SUM(주문금액) AS 주문금액합계
FROM TBL
WHERE 주문일시 BETWEEN '20240301' AND '20240315'
GROUP BY 회원번호
HAVING COUNT(*) >= 2
ORDER BY 주문금액합계 DESC;

 

각 절의 역할

  • WHERE : 그룹 만들기 전에 필터링
  • GROUP BY : 같은 값끼리 묶음
  • HAVING : 그룹 만들어진 후 필터링
  • ORDER BY : 최종 정렬

 

8. 실전 복합 예제 (도서 대출 시스템)

 

예제 구조

  • 도서 테이블
  • 출판사 테이블
  • 대출 테이블

 

목표

도서명, 출판사명, 대출 시작일, 대출 종료일 출력

 

쿼리 구조

SELECT B.도서명,
       C.출판사명,
       TO_CHAR(A.대출시작일, 'YYYY-MM-DD') AS 대출시작일,
       TO_CHAR(A.대출종료일, 'YYYY-MM-DD') AS 대출종료일
FROM 대출 A
JOIN 도서 B ON A.도서ID = B.도서ID
JOIN 출판사 C ON B.출판사ID = C.출판사ID
ORDER BY B.도서명;

 

여기서 중요한 포인트

  • JOIN은 FK 기준으로 연결
  • 날짜 포맷은 TO_CHAR로 처리
  • 최종 정렬은 도서명 기준
  • 별칭을 적극적으로 사용해야 가독성 좋음

 

9. 실무에서 가장 많이 쓰는 조인 유형

유형 사용 빈도
INNER JOIN 매우 많음
LEFT JOIN 매우 많음
RIGHT JOIN 거의 없음
FULL JOIN 특정 경우
NATURAL JOIN 거의 없음
CROSS JOIN 특수 케이스

 

10. 실무 관점 핵심 요약

  • ANSI JOIN 사용이 기본
  • LEFT JOIN이 가장 많이 사용됨
  • JOIN은 FK 기반으로 설계되어야 함
  • WHERE vs HAVING 구분 반드시 이해
  • GROUP BY는 SELECT 컬럼과 규칙 맞춰야 함
  • 실행 순서 이해 못하면 디버깅 불가

 

11. 실무 팁

 

항상 별칭 사용

FROM 주문 O
JOIN 회원 M ON O.member_id = M.member_id
  • 조인 많을수록 가독성 유지 중요
  • CROSS JOIN 실수로 사용하면 성능 대참사 발생

 

이번 파트는 단순 문법이 아니라 관계형 DB의 핵심 원리

  • 데이터는 테이블에 흩어져 있다
  • JOIN은 그것을 연결하는 기술이다
  • GROUP BY는 분석의 시작이다

이걸 이해하면 쿼리 작성 수준이 한 단계 올라간다.

'SQLD 시험 대비' 카테고리의 다른 글

SQLD 집합연산자  (0) 2026.02.27
SQLD 서브쿼리  (0) 2026.02.26
SQLD 조인  (0) 2026.02.23
SQLD ORDER BY 정리  (0) 2026.02.22
SQLD GROUP BY & HAVING 정리  (0) 2026.02.21