레거시 외부 조인 해석

(+)는 NULL이 채워질 쪽, 즉 비보존 테이블에 붙습니다.

그래서 LEFT JOIN과 RIGHT JOIN은 같은 조건식이라도 (+)가 붙는 위치가 서로 반대입니다.

한 줄 규칙

보존되는 테이블은 그대로 남고, 빠질 수 있는 테이블 쪽 컬럼에 (+)를 붙여 Oracle이 NULL 보충 대상을 표시합니다.

LEFT JOIN

오른쪽에 (+)
보존 테이블
users
NULL 채움 대상
orders
users.user_id = orders.user_id(+)

users LEFT JOIN orders는 오른쪽 테이블 orders가 비보존 쪽이므로 오른쪽 컬럼에 (+)가 붙습니다.

RIGHT JOIN

왼쪽에 (+)
NULL 채움 대상
users
보존 테이블
orders
users.user_id(+) = orders.user_id

본문 예시처럼 users RIGHT JOIN orders는 왼쪽 테이블 users가 비보존 쪽이라 왼쪽 컬럼에 (+)가 붙습니다.

해석 포인트: 레거시 SQL에서는 먼저 (+) 위치로 비보존 테이블을 찾으면 방향이 바로 읽힙니다. 다만 표현 제약이 많아서 실제 작성은 ANSI JOIN이 더 명확합니다.