OUTERJOIN의 방식 오라크 르조인&

오라클 JOIN 목차 MySQL이나 기타 DB를 사용하신 분들에게는 오라클 조인 방법이 낯설 것입니다.

나도 오라클만 쓸래 ANSI SQL을 사용할 때 매우 불편했습니다. ANSI SQL을 사용할 때마다 이래서 높은 오라클을 사용하는구나 싶을 정도입니다.

초보자들을 위해 오늘은 오라클 조인 방법을 소개하겠습니다.조인설명을 위한 테스트 데이터 A. 칼럼=B. 칼럼 오라클 테이블의 조인을 이해하기 위해 테스트 데이터로서 병원정보와 약국정보 테이블을 이용하여 설명을 진행합니다.

병원 정보 내역

위는 오라클 조인을 설명하기 위한 “약국정보” 테이블 내역입니다.

약국정보내역

위는 오라클 조인을 설명하기 위한 “병원정보” 테이블 조회한 내역입니다.

병원정보 = 약국정보 INNER JOIN

병원과 약국정보조인위의 사진 정보는 병원정보테이블(A), 약국정보테이블(B)을 조인하는 내역입니다.

①의 HOPIT_INFO의 A는 병원 정보 테이블을 앞으로 A라는 이름으로 사용한다는 뜻이에요. 이를ALIAS(별명)라고부릅니다.”PHARM_INFO의”B”도마찬가지로,앞으로는”B”에이름을쓰라는뜻입니다.

②의 영역이 병원정보와 약국정보를 조인하는 영역으로 ASNSI 쿼리와 달리 오라클은 조건절 영역에서 조인이 이루어집니다.내용은 A.SIDO_CD_NM=B.SIDO_CD_NM, 즉 병원정보의 시도명과 약국정보의 시도명이 일치하는 값만 조회, 그 아래의 조건 역시 3종류의 EQUAL(=) 조인으로 동일한 값만 출력하도록 조건되어 있습니다.

③의 결과치 출력을 확인하면 경기도의료원·의정부병원과 같은 도시, 같은 군/구, 같은 읍·면·동의 약국은 ‘엔젤팜 약국’, ‘철인 약국’… 등으로 출력된 내역입니다.

병원정보=약국정보(+)LEFT OUTERJOIN

병원과 약국정보 OUTER JOIN

위 캡처 내용은 병원정보와 약국정보를 OUTER JOIN(+)한 내용으로 주소가 “강남구”인 병원 전체를 출력하고 약국정보 중 시·도, 군·구, 읍·면·동이 일치하는 약국만 약국명을 출력한다는 조회 쿼리입니다.

①의 “B” 테이블 조건의 마지막에 (+) 표시는 LEFTOUTER JOIN을 한다는 뜻으로 오라클에서는 “(+)” 표시를 합니다.

②의 내역을 보면 시·도·군·구·읍·면·동이 일치하지 않지만 LEFT OUTER JOIN이 있어서 출력되고 있습니다.

③ 출력내역을 보면 ‘미병원’과 시도, 군, 읍면동이 일치하는 약국이 출력되는 내역입니다.

오라클에서는 ANSI 쿼리와 달리 (+)만 표시하면 되므로 라인 수를 대폭 줄일 수 있습니다.? 참고로 오라클 조인을 ANSI(안시) 방식으로 조인하는 방법은 제 블로그 내의 “오라클 SQL을 ANSI(안시) SQL로 변환”을 참조하십시오.

이상으로 오라클의 INNER JOIN과 LEFT OUTER JOIN에 대해 알아봤습니다.

내용에 이상한 내용이나 중요한 의견은 댓글을 남겨주시면 반영하겠습니다.

error: Content is protected !!