본문 바로가기

IT/DB

데이터베이스 쿼리 left join, (+) 표기하는 방식 차이

300x250
반응형
 

LEFT JOIN과 (+) 표기 방식은 **외부 조인(OUTER JOIN)**을 표현하는 두 가지 방법으로, SQL 표준 방식과 특정 DBMS의 고유 방식의 차이를 보여줍니다.


 

1. LEFT JOIN 표기 방식

  • SQL 표준(ANSI SQL-92 이후)에서 도입된 외부 조인 표현 방식.
  • 가독성이 높고 직관적으로 이해하기 쉽기 때문에 널리 사용.
  • LEFT JOIN은 왼쪽 테이블의 모든 행을 유지하고, 오른쪽 테이블의 조건에 일치하지 않는 경우 NULL로 채웁니다.

예제

SELECT A.ID, A.Name, B.Order FROM A LEFT JOIN B ON A.ID = B.ID;

 

설명:

  • LEFT JOIN은 왼쪽 테이블(A)의 모든 행을 포함하며, 오른쪽 테이블(B)의 조건에 일치하지 않는 경우 결과에 NULL로 표시.

 

2. (+) 표기 방식 (오라클 전통 방식)

  • 오라클의 비 ANSI SQL 방식으로 외부 조인을 표현.
  • **(+) 기호는 "외부 조인 대상"**임을 나타냅니다.
  • 이 방식은 조인 조건을 WHERE 절에 작성합니다.
  • LEFT JOIN에서 오른쪽 테이블에 조건이 일치하지 않는 데이터를 포함하려면, 오른쪽 테이블 조건 옆에 **(+)**를 추가합니다.

예제

SELECT A.ID, A.Name, B.Order FROM A, B WHERE A.ID = B.ID(+);
 

 

설명:

  • B.ID(+)는 오른쪽 테이블(B)이 외부 조인 대상임을 의미.
  • LEFT JOIN과 동일한 결과를 반환.

비교: LEFT JOIN vs (+)


특징 LEFT JOIN (+) 표기 방식
표준 여부 ANSI SQL 표준 비 ANSI SQL (오라클 고유)
가독성 직관적이고 읽기 쉬움 상대적으로 덜 직관적
작성 위치 ON 절에서 조인 조건 작성 WHERE 절에서 (+) 사용
호환성 모든 DBMS에서 지원 오라클에서만 지원
사용 권장 여부 권장 (SQL 표준 준수) 비권장 (표준 준수 어려움)

 

예제 비교

테이블 데이터:

테이블 A


ID Name
1 Alice
2 Bob
3 Charlie

테이블 B


ID Order
1 A123
2 B456

 

LEFT JOIN 예제:

 
SELECT A.ID, A.Name, B.Order FROM A LEFT JOIN B ON A.ID = B.ID;

 

(+) 표기 방식 예제:

 
SELECT A.ID, A.Name, B.Order FROM A, B WHERE A.ID = B.ID(+);

 

결과:

 
ID Name Order
1 Alice A123
2 Bob B456
3 Charlie NULL

장단점

LEFT JOIN 방식:

  • 장점:
    • SQL 표준 준수.
    • 여러 조인을 직관적으로 작성 가능.
    • 유지 보수 및 이식성이 좋음.
  • 단점:
    • (+) 방식에 익숙한 사용자에게는 낯설 수 있음.

(+) 표기 방식:

  • 장점:
    • 오라클 고유 환경에서는 익숙할 수 있음.
  • 단점:
    • SQL 표준이 아니므로 호환성이 떨어짐.
    • 복잡한 쿼리에서 가독성이 낮음.

결론

  • 새로운 개발 환경에서는 **LEFT JOIN**과 같은 SQL 표준 방식 사용을 권장.
  • (+) 표기 방식은 기존 오라클 시스템 유지보수나 레거시 코드와 호환성 확보가 필요한 경우에만 사용.
300x250
반응형