Posted
Filed under DataBase/Oracle

데이터베이스에서 두 개 이상의 테이블을 연결할 때 사용하는 JOIN(조인). 그중에서도 전 세계 표준인 ANSI JOIN 문법은 가독성이 높고 유지보수가 쉬워 실무에서 가장 권장되는 방식입니다.

오늘은 실무에서 90% 이상 사용되는 **'조인 3대장'**을 중심으로 핵심 종류를 정리해 보겠습니다.

1. INNER JOIN (내부 조인)

가장 기본이 되는 조인 방식으로, 두 테이블에서 조인 조건이 일치하는 데이터만 추출합니다. (수학의 교집합 개념)

 

  • 특징: 양쪽 테이블에 모두 매칭되는 값이 있어야 결과에 포함됩니다.

  • SQL 샘플

SELECT E.사원명, D.부서명
FROM 사원 E
INNER JOIN 부서 D ON E.부서코드 = D.부서코드;

실무 활용:
부서에 소속된 사원 명단만 정확히 뽑고 싶을 때 사용합니다.

2. LEFT OUTER JOIN (왼쪽 외부 조인)

왼쪽(먼저 쓴) 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에서 일치하는 값이 있으면 붙입니다. 일치하는 게 없으면 오른쪽 자리는 NULL로 표시됩니다.

  • 특징: 왼쪽 기준 테이블의 데이터는 누락 없이 모두 보존합니다.

  • SQL 샘플

SELECT E.사원명, D.부서명
FROM 사원 E
LEFT OUTER JOIN 부서 D ON E.부서코드 = D.부서코드;
  • 실무 활용: 신입사원처럼 아직 부서 배정을 받지 못한 사람까지 포함해 전체 사원 명단을 보고 싶을 때 필수입니다.

3. RIGHT OUTER JOIN (오른쪽 외부 조인)

오른쪽 테이블의 모든 데이터를 기준으로 가져옵니다. 왼쪽 테이블에 매칭되는 값이 없으면 NULL로 처리됩니다.

  • 특징: LEFT JOIN과 방향만 반대입니다.

  • SQL 샘플

SELECT E.사원명, D.부서명
FROM 사원 E
RIGHT OUTER JOIN 부서 D ON E.부서코드 = D.부서코드;

실무에서는 테이블 순서만 바꾸면 되기 때문에 가독성을 위해 LEFT JOIN을 훨씬 더 많이 사용합니다.

2026/03/20 21:32 2026/03/20 21:32
Posted
Filed under DataBase/Oracle
1. WM_CONCAT (과거의 방식, 이제는 안녕!)

WM_CONCAT은 오라클 내부적으로 사용되던 함수로, 사용법이 매우 간단해서 예전에는 많이 쓰였습니다.

  • 사용법: SELECT WM_CONCAT(이름) FROM 사원테이블;

  • 장점: 구문이 짧고 간단합니다.

  • ⚠️ 주의사항 (가장 중요!): * 공식 지원 함수가 아닙니다. (언제 사라져도 이상하지 않은 함수였죠.)

    • Oracle 12c 버전부터는 완전히 제거되었습니다. * 즉, 12c 이상의 환경에서 이 함수를 쓰면 에러가 발생하며 시스템이 멈출 수 있습니다.

    • 정렬이 불가능하여 데이터 순서가 제멋대로 섞입니다.

2. LISTAGG (현재의 표준, 강력 권장!)
오라클 11g R2 버전부터 등장한 공식 표준 함수입니다. 현재는 이 방식을 사용하는 것이 정석입니다.

예시)

SELECT LISTAGG(컬럼명, '구분자') WITHIN GROUP (ORDER BY 정렬기준)

FROM 테이블명;

장점:

 

  • 오라클이 공식 지원하므로 안정적입니다.

  • WITHIN GROUP (ORDER BY ...) 구문을 통해 데이터가 합쳐지는 순서를 지정할 수 있습니다.

  • 구분자(콤마, 슬래시 등)를 내 마음대로 지정할 수 있습니다.

구분 WM_CONCAT LISTAGG
권장 여부 사용 금지 (비권장) 적극 권장 (표준)
정렬 기능 지원 안 함 순서 지정 가능
사용 가능 버전 12c 버전부터 삭제됨 11g R2 ~ 최신 버전(23ai)까지
2026/03/19 17:43 2026/03/19 17:43