반응형
INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL JOIN의 차이점들을 살펴보겠습니다.
우선 아래와 같이 A, B테이블과 데이터가 존재한다고 봤을때.
A B
- -
1 3
2 4
3 5
4 6
1. INNER JOIN (교집합)
SELECT * FROM A INNER JOIN B ON A.A = B.B;
SELECT A.*, B.* FROM A,B WHERE A.A = B.B;
A | B
--+--
3 | 3
4 | 4
A 테이블과 B 테이블 양쪽에 동일한 값으로 존재하는 데이터만 추출하게 됩니다.
참고로 "INNER JOIN"을 "JOIN"문으로 줄여 사용할 수 있습니다.
2. LEFT OUTER JOIN (차집합)
SELECT * FROM A LEFT OUTER JOIN B ON A.A = B.B;
SELECT A.*, B.* FROM A,B WHERE A.A = B.B(+); -- 오라클 기준
A | B
--+-----
1 | NULL
2 | NULL
3 | 3
4 | 4
"LEFT OUTER JOIN"문 기준으로 왼쪽에 정의된 A 테이블이 중심이 되며,
ON 조건문에 선언한 A 테이블의 A 컬럼과 B 테이블의 B 컬럼을 비교하여 A 테이블의 전체 행과 양쪽 테이블의 공통 행이 추출된다고 보시면 됩니다.
참고로 "LEFT OUTER JOIN"을 "LEFT JOIN"으로 줄여 사용할 수 있습니다.
3. RIGHT OUTER JOIN (차집합)
SELECT * FROM A RIGHT OUTER JOIN B ON A.A = B.B;
SELECT A.*, B.* FROM A,B WHERE A.A(+) = B.B; -- 오라클 기준
A | B
-----+----
3 | 3
4 | 4
NULL | 5
NULL | 6
"LEFT OUTER JOIN"과 반대로 "RIGHT OUTER JOIN"문 기준으로 오른쪽에 정의된 B 테이블이 중심이 되서 추출됩니다.
"RIGHT OUTER JOIN" 역시 "RIGHT JOIN"으로 줄여 사용할 수 있습니다.
4. FULL OUTER JOIN (합집합)
SELECT * FROM A FULL OUTER JOIN B ON A.A = B.B;
A | B
-----+-----
1 | NULL
2 | NULL
3 | 3
4 | 4
NULL | 6
NULL | 5
"FULL OUTER JOIN"문 기준으로 양쪽 테이블에서 ON 조건문 선언된 컬럼들은 중복 제거되면서 나머지 데이터들을 모두 추출한다고 보시면 됩니다.
"FULL OUTER JOIN"도 "FULL JOIN"으로 줄여서 사용할 수 있습니다.
반응형
'IT이야기' 카테고리의 다른 글
Javascript로 replaceAll 만들기 (0) | 2021.02.22 |
---|---|
Javascript로 이메일주소 정합성 체크하기 (이메일주소 검증, 정규식) (0) | 2021.02.22 |
Javascript "let"와 "var"의 차이점 (0) | 2021.02.18 |
오라클 테이블 구조 및 데이터 복사하기 CREATE TABLE AS (0) | 2021.02.17 |
파이썬에서 리눅스 명령어, 프로그램 호출하는 방법 (0) | 2021.02.17 |