Oracle - JOIN

SQL BOOSTER를 읽고

Posted by Yan on February 22, 2024

SQL 스터디 2주차!

JOIN

🖇 1. INNER JOIN

조인 조건을 만족하는 데이터만 결합해 결과로 내보닌다.

  • 필터조건 : FROM절의 테이블에서 필요한 데이터를 걸러내는 역할
    • FROM절에 사용된 테이블이 하나면 WHERE절에는 필터조건만 존재
  • 조인조건 : 두 개의 테이블을 연결하는 역할
    • FROM절에 사용된 테이블이 두 개 이상이면 WHERE절에는 필터조건과 조인 조건이 동시에 있을 수 있다.

특징

  • 조인 조건을 만족하는 데이터만 결합되어 결과에 나올 수 있다.
  • 1건과 M건이 조인되면 M건의 결과가 나온다.

처리과정

  1. 필터조건 처리 (CUS_ID = ‘A’ 같은)
  2. 조인조건 검색 → 해당 건이 있다면 다음 조인조건 검색

🖇 2. OUTER JOIN

  • 기준 데이터 집합은 조인 조건을 만족하지 않아도 모두 결과에 포함된다.
  • 아우터 조인 문법 : 조인조건 컬럼 한 쪽에 (+)표시
    • (+) 표시가 붙은 쪽은 참조 데이터 집합
    • 표시가 없는 쪽은 기준 데이터 집합
  • 필터 조건에 (+)사용시 아우터 조인 전에 필터 조건이 사용된다.
  • 아우터조인에서 참조 데이터 집합은 기준 데이터 집합을 동시에 두 개 이상 가질 수 없다.
  • 아우터조인은 기준 데이터 집합과 참조 데이터 집합으로서 조인이 이루어지낟.
  • 참조 데이터 집합은 조인 조건에 (+)가 표시된 쪽이며 반대쪽은 기준 데이터 집합이 된다.

기억할 꿀팁

OUTER JOIN이 많을시 INNER JOIN시 ON절에 필터조건을 같이 쓰면 성능 향상에 유리하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT *
FROM A
INNER JOIN B
  ON B.COL = A.COL
  AND B.COL2 = '1'
LEFT OUTER JOIN C
-- 생략

VS

SELECT *
FROM A
INNER JOIN B
   ON B.COL = A.COL
LEFT OUTER JOIN C  
 -- 중략
WHERE B.COL2 = '1'
reference

SQL BOOSTER