저번에 ANSI INNER JOIN에 대해서 알아봤는데
INNER JOIN은 동일한 값이 있는 경우만 조인하기 때문에
A 테이블에는 값이 있지만 B 테이블에 값이 없는 경우에는
SELECT 결과를 볼 수가 없다
그럴 때 사용하는 것이 OUTER JOIN인데
OUTER JOIN이란? 값이 없어도 행이 출력되게 하는 것!
LEFT JOIN
RIGHT JOIN
FULL OUTER JOIN이 있는데
차례대로 알아보자
가장 먼저 LEFT OUTER JOIN인데
SELECT 컬럼명
FROM 값이 있는 테이블
LEFT JOIN 값이 없는 테이블
ON 조인 조건
이런 식으로 작성하는데
오라클 LEFT JOIN 같은 경우에는
값이 없는 쪽에 (+)를 붙이다 보니
ANSI LEFT JOIN도 비슷하게
값이 없는쪽이 왼쪽인가?
이런 생각이 들텐데
안타깝게도 반대다
다음으로는 ANSI RIGHT OUTER JOIN을 알아보자
LEFT JOIN과 다른 점은
LEFT 대신 RIGHT를 쓰고
값이 없는 쪽이 왼쪽에 위치한다는 것 밖에 없다
출력해 값이 없는 테이블인 왼쪽의 TEST_TABLE에 '갑수' 라는 값이
없음에도 값이 출력이 되는 것이 보인다
마지막으로는 FULL OUTER JOIN을 알아보자
FULL OUTER JOIN은
양 테이블에 값이 없는 경우에도 모두 출력시키는데
LEFT JOIN이나 RIGHT JOIN을 썼던 부분을
FULL OUTER JOIN으로 바꿔주면 된다
출력 시에는 양 테이블에 값이 일치하지 않거나 값이 없는 경우에도
모두 출력시켜 주는 것을 볼 수 있다
마지막으로 ANSI를 사용한
LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN을 정리해 보자면..
LEFT JOIN
SELECT 컬럼명
FROM 값이 있는 테이블
LEFT JOIN 값이 없는 테이블
ON 조인 조건
RIGHT JOIN
SELECT 컬럼명
FROM 값이 없는 테이블
RIGHT JOIN 값이 있는 테이블
ON 조인 조건
FULL OUTER JOIN
SELECT 컬럼명
FROM 테이블
FULL OUTER JOIN 테이블
ON 조인 조건
오라클 JOIN은 값이 없는 쪽에(+)를 붙여서
ANSI OUTER JOIN을 보면 좀 헷갈릴 수 있으니 주의하도록 하자
'IT > Oracle' 카테고리의 다른 글
오라클 DECODE 알아보기 (0) | 2019.03.25 |
---|---|
오라클 NVL, NVL2 알아보기 (0) | 2019.03.25 |
오라클 OUTER JOIN 알아보기 (0) | 2019.03.21 |
ANSI INNER JOIN 사용해보기 (0) | 2019.03.20 |
오라클 INNER JOIN 사용하기 (0) | 2019.03.20 |
댓글