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
반응형
'IT > DB' 카테고리의 다른 글
db safer 접속ip 변경하는 방법 (0) | 2025.01.21 |
---|---|
데이터 타입 int, bigint 차이 (0) | 2025.01.08 |
기존 데이터 백업 insert 쿼리 만드는 방법 (1) | 2024.12.07 |
데이터 삭제 delete와 truncate 차이는? (0) | 2024.12.07 |
left join 과 left outer join 차이는? (2) | 2024.12.05 |