반응형
JOIN 이란?
JOIN은 SELECT를 통해 테이블에서 데이터를 가져올 때, 두 개 이상의 테이블에서 조인 조건을 만족하는 행을 반환하는 구문입니다. 대게 필요한 데이터가 두 개 이상의 테이블에 나눠져 있을 때 조인을 통하여 데이터를 합쳐서 가져올 때 사용합니다.
JOIN의 사용 예시
INNER JOIN
SELECT [테이블명1.컬럼1], [테이블명1.컬럼2], [테이블명2.컬럼1] .... FROM [테이블명1] JOIN [테이블명2] ON [테이블명1].[컬럼] = [테이블명2].[컬럼] WERER [조건1]
테이블 COUNTRY와 테이블 CITY를 JOIN 하여 ON 조건절에 따라 COUNTRY.Code와 CITY.CountryCode가 일치하는 데이터들을 합쳐서 가져옵니다.
INNER JOIN은 아래와 같이 WHERE 조건절만으로도 JOIN하여 데이터를 가져올 수 있습니다.
SELECT [테이블명1.컬럼1], [테이블명1.컬럼2], [테이블명2.컬럼1] .... FROM [테이블명1], [테이블명2] WHERE [테이블명1].[컬럼] = [테이블명2].[컬럼]
LEFT JOIN
SELECT [테이블명1.컬럼1], [테이블명1.컬럼2], [테이블명2.컬럼1] .... FROM [테이블명1] LEFT JOIN [테이블명2] ON [테이블명1].[컬럼] = [테이블명2].[컬럼] WERER [조건1]
INNER JOIN에서는 ON조건절에 일치하지 않는 데이터거나 존재하지 않는 데이터들은 아예 데이터를 가져오지 않습니다. 반면 LEFT JOIN은 일단 왼쪽 테이블의 데이터를 모두 가져온 뒤 ON조건절에 일치하지 않거나 존재하지 않는 데이터들을 모두 NULL값으로 처리합니다.
예제 테이블 1 - TABLE1
NAME | SEX | PID |
Mr.KIM | MAN | 1 |
Mr.KWON | WOMAN | 2 |
Mr.LEE | MAN | 3 |
예제 테이블 2 - TABLE2
PID | PHONE |
1 | 010-1234-1234 |
2 | 010-1111-2222 |
4 | 010-1234-5678 |
SELECT T1.NAME, T2.PHONE FROM TABLE1 T1 LEFT JOIN T2 ON T1.PID = T2.PID
T1.NAME | T2.PHONE |
Mr.KIM | 010-1234-1234 |
Mr.KWON | 010-1111-2222 |
Mr.LEE | NULL |
RIGHT JOIN
SELECT [테이블명1.컬럼1], [테이블명1.컬럼2], [테이블명2.컬럼1] .... FROM [테이블명1] RIGHT JOIN [테이블명2] ON [테이블명1].[컬럼] = [테이블명2].[컬럼] WERER [조건1]
LEFT JOIN은 일단 오른쪽 테이블의 데이터를 모두 가져온 뒤 ON조건절에 일치하지 않거나 존재하지 않는 데이터들을 모두 NULL값으로 처리합니다.
SELECT T1.NAME, T2.PHONE FROM TABLE1 T1 LEFT JOIN T2 ON T1.PID = T2.PID
T1.NAME | T2.PHONE |
Mr.KIM | 010-1234-1234 |
Mr.KWON | 010-1111-2222 |
NULL | 010-1234-5678 |
FULL JOIN
FULL JOIN은 양쪽 모두의 데이터를 가져온 뒤 ON조건절에 일치하지 않거나 존재하지 않는 데이터들을 모두 NULL값으로 처리합니다. FULL JOIN은 사용할 일이 잘 없으며 지원하지 않는 경우도 있습니다.
반응형
'Programming > Oracle' 카테고리의 다른 글
오라클 쿼리 튜닝 가이드 - 기본 (0) | 2022.01.23 |
---|---|
[Oracle] 오라클 인덱스(Index)와 자동 인덱싱 (0) | 2021.10.04 |
댓글