이번 포스팅에선 샘플데이터를 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 이 있으니 다른 곳에서도 참고 하시면 좋을 것 같습니다.
'IT > ORACLE' 카테고리의 다른 글
[ORACLE] DB 삭제 시 필요한 좋은 습관. (0) | 2021.12.24 |
---|---|
[ORACLE] 오라클 테이블 컬럼 순서 변경 (0) | 2020.07.06 |
[ORACLE] 오라클 샘플 데이터 생성. (0) | 2020.06.22 |
[ORACLE] INSERT,UPDATE,DELETE 샘플쿼리 (0) | 2020.03.17 |
[ORACLE] 특정 테이블 CODE 로 다른 테이블에서 명칭 가져오기 (0) | 2020.02.18 |
댓글