본문 바로가기
IT/ORACLE

[ORACLE] 샘플 데이터 JOIN 의 종류

by 쫄보에서고수까지 2020. 6. 23.
반응형

이번 포스팅에선 샘플데이터를 JOIN 해서 다른 테이블의 정보도 같이 조건에따라 나열하고 

실무에서 꼭 필요한 것 중 하나 입니다.


대표적인 JOIN 의 종류 


LEFT JOIN , RIGHT JOIN , SELF JOIN , OUTER JOIN 등등이 있습니다.


다른 포스팅들과 다르게 최대한 이해하기 쉽도록 설명하겠습니다.


JOIN 은 A 테이블과 B 테이블 의 정보를 합치고 좀 더 많은 정보를 보기 위해 합치는 역할 입니다.

ex) 술자리에서 합석 느낌.

술자리 테이블은 왼쪽 구석부터 오른쪽 끝까지 자리를 채운다고 가정 합니다.


LEFT JOIN 

- 왼쪽 기준으로 JOIN 을 하고 



도형으로는 이렇게 표현 할 수 있습니다. 


RIGHT JOIN 

- 당연히 반대로 

오른쪽 테이블 기준으로 조회 하고 


도형으로 표현은 당연히 반대




INNER JOIN 

- 왼쪽과 오른쪽 서로 조건이 겹치는것만 조회합니다.


도형으로 표현하면 다음과 같습니다.



LEFT OUTER JOIN 

- LEFT JOIN + INNER JOIN 이라고 생각하시면 됩니다.



RIGHT OUTER JOIN 

- RIGHT JOIN + INNER JOIN 



샘플데이터를 통한 JOIN 쿼리 결과 조회


LEFT JOIN 

- EMP 테이블과 DEPT 테이블에서 키값으로 조인할 컬럼명은 DEPTNO (부서번호) 입니다.


EMP 테이블에서 홍길동이라는 사원의 부서번호가 10번이지만 부서이름을 알 수 없습니다.


홍길동이라는 사람의 부서번호를 가지고 부서명을 같이 가져오기 위해 JOIN을 한다고 생각하면 됩니다.


SELECT * 

FROM  EMP A

LEFT JOIN  DEPT B ON A.DEPTNO = B.DEPTNO ;

를 하게 되면 왼쪽 EMP 테이블 기준 14건의 데이터들 중에 DEPT 테이블 부서번호가 맞는 정보들을 가져와서 JOIN 해줍니다.




이처럼 부서테이블의 정보는 10,20,30,40 총 4건의 데이터 밖에 없지만

EMP 테이블(사원정보) 14건을 기준으로 DEPTNO 가 같은게 있다면 부서정보를 전부 채워넣어서 보여줍니다.


SELECT * 

FROM EMP A

LEFT JOIN DEPT B ON A.DEPTNO = B.DEPTNO AND B.LOC = 'NEW YORK'


조건 하나가 추가 되면 어떻게 될까요 ? 


LOC 이 NEW YORK 라고 조건을 주었습니다.




이와 같이 NEW YORK 인것만 다 보이고 나머지는 DNAME , LOC 이 없더라도 보여집니다.


부서번호가 같고 , LOC = 'NEW YORK' 인 데이터만 JOIN 하려면 


SELECT * 

FROM EMP A

INNER JOIN DEPT B ON A.DEPTNO = B.DEPTNO AND B.LOC = 'NEW YORK'


INNER JOIN을 하면서 



굳이 많은 데이터들을 조회해놓고 WHERE에서 B.LOC = 'NEW YORK' 을 하지 않아도 해당되는 값들만 보여집니다.


 실무에서 가장 많이 사용 되는 JOIN 은 LEFT OUTER JOIN , INNER JOIN 이 있으니 다른 곳에서도 참고 하시면 좋을 것 같습니다.





















반응형
LIST

댓글