SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

조인의 결과 의미: Inner·Outer·Semi·Anti Join과 NULL

원래 이론 →

판단 기준

주문이 없는 고객을 찾는 흔한 표현은 다음과 같습니다.

SQL
SELECT c.customer_id
FROM customers c
LEFT JOIN orders o
  ON o.customer_id = c.customer_id
WHERE o.order_id IS NULL;

여기서 o.order_id는 실제 Match 행에서 NULL이 될 수 없는 Key여야 합니다. Optional Table의 Nullable Column을 검사하면 실제로 Match한 행의 값이 NULL인 경우까지 미매칭으로 잘못 분류할 수 있습니다.

안전한 기준은 다음과 같습니다.

  • Primary Key 또는 NOT NULL Unique Key
  • Join 성공 시 반드시 값이 존재하는 Column
  • 업무적으로 NULL이 가능한 속성 Column은 미매칭 판별에 사용하지 않음

존재하지 않음을 직접 표현하려면 다음 NOT EXISTS도 명확합니다.

SQL
SELECT c.customer_id
FROM customers c
WHERE NOT EXISTS (
    SELECT 1
    FROM orders o
    WHERE o.customer_id = c.customer_id
);

두 표현을 변경할 때는 Join 조건, 추가 Predicate, NULL 가능성을 함께 비교합니다.


이 부분의 원문 →

헷갈리는 개념

혼동하기 쉬운 판단정확한 판단
Left Join은 왼쪽 행을 한 번만 반환한다오른쪽 Match 수만큼 반복되며 Match가 없을 때 최소 한 행을 보존한다
Optional Table 조건은 ON과 WHERE 어디에 둬도 같다WHERE의 Null-Rejecting Predicate는 미매칭 행을 제거할 수 있다
LEFT JOIN ... nullable_col IS NULL은 항상 미매칭 탐지다실제 Match 행의 Column도 NULL일 수 있어 NOT NULL Key를 사용해야 한다
JOIN + DISTINCT는 항상 EXISTS와 같다오른쪽 Column·중복·집계·NULL 의미를 확인해야 한다
NOT IN과 NOT EXISTS는 항상 같다안쪽과 바깥 Join Key의 NULL 가능성 때문에 결과가 달라질 수 있다
ANTI NA는 NULL을 무시한다NOT IN의 NULL 의미를 보존하기 위한 Null-Aware Operation이다
Full Outer Join은 항상 한 가지 알고리즘으로 실행된다Native Hash 또는 변환된 Outer·Anti 구조가 가능하다
Join Type이 정해지면 Join Method도 정해진다같은 Join Type을 NL·Hash·Merge 등 여러 Method로 실행할 수 있다
높은 Constraint 신뢰도는 Outer Join을 불필요하게 만든다이번 조회가 보존해야 할 행과 추가 Predicate까지 확인해야 한다
성능이 빨라지면 SQL 변경이 성공이다보존 행·중복·NULL·집계 결과가 같아야 한다

이 부분의 원문 →

대표 계산·예제

다음 데이터를 사용합니다.

이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.