SQL을 통한 데이터 추출 시 가장 많이 쓰게 되는게 JOIN 함수 입니다. 실무에서도 JOIN 함수만 잘 사용하면 거의 무리 없이 데이터 추출이 가능해요.(물론 JOIN 및 서브쿼리 스킬에 따라 쿼리의 속도나 이후 전처리 시간이 줄어들게 되겠죠.
(참고 - 서브쿼리)
2023.04.26 - [끝없는발전/SQL] - [금융권 SQL 실무] 서브쿼리(Subquery)
SQL에서 꼭 필요한 JOIN 함수에 대해 알아봅시다.
JOIN 함수란?
SQL JOIN 함수는 두 개 이상의 테이블에서 데이터를 결합하여 새로운 결과 집합을 생성하는 데 사용되는 함수입니다. JOIN 함수는 특정 컬럼을 기준으로 테이블 간에 관련성을 만들어 냅니다. 이를 통해 여러 테이블에서 필요한 정보를 추출할 수 있습니다.
SQL JOIN 함수는 다음과 같은 종류가 있습니다.
1. INNER JOIN
두 개 이상의 테이블에서 매치되는 데이터만 추출하여 새로운 결과 집합을 만듭니다.
2. LEFT JOIN
왼쪽 테이블에서 모든 데이터를 추출하고, 매치되는 데이터가 없으면 NULL 값을 반환합니다.
3. RIGHT JOIN
오른쪽 테이블에서 모든 데이터를 추출하고, 매치되는 데이터가 없으면 NULL 값을 반환합니다.
4. FULL OUTER JOIN
왼쪽과 오른쪽 테이블에서 모든 데이터를 추출합니다.
JOIN 함수는 다음과 같이 사용할 수 있습니다.
SELECT *
FROM 테이블1
JOIN 테이블2 ON 테이블1.컬럼명 = 테이블2.컬럼명;
위와 같은 방법으로 테이블 간에 관계를 설정하고, WHERE절을 통해 원하는 데이터를 추출할 수 있습니다. JOIN 함수는 데이터를 더욱 효과적으로 처리하기 위한 SQL의 중요한 함수 중 하나입니다.
JOIN 함수 활용 예시
SQL JOIN 함수는 여러 테이블에서 데이터를 추출하거나 결합하여 새로운 결과를 생성하는 데 사용됩니다. 아래는 JOIN 함수를 사용하는 예시입니다.
예시 1: INNER JOIN
테이블 A와 테이블 B에서 일치하는 데이터를 추출하는 INNER JOIN을 사용하는 경우입니다.
SELECT *
FROM 테이블A
INNER JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
예시 2: LEFT JOIN
테이블 A에서 모든 데이터를 추출하고, 테이블 B에서 일치하는 데이터를 추출하는 LEFT JOIN을 사용하는 경우입니다. 일치하지 않는 경우 NULL 값을 반환합니다.
SELECT *
FROM 테이블A
LEFT JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
예시 3: RIGHT JOIN
테이블 B에서 모든 데이터를 추출하고, 테이블 A에서 일치하는 데이터를 추출하는 RIGHT JOIN을 사용하는 경우입니다. 일치하지 않는 경우 NULL 값을 반환합니다.
SELECT *
FROM 테이블A
RIGHT JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
예시 4: FULL OUTER JOIN
테이블 A와 테이블 B에서 모든 데이터를 추출하는 FULL OUTER JOIN을 사용하는 경우입니다.
SELECT *
FROM 테이블A
FULL OUTER JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
JOIN 함수는 이러한 방식으로 사용하여 여러 테이블에서 필요한 데이터를 추출하거나 결합하여 새로운 결과 집합을 생성할 수 있습니다. 또한 JOIN 함수를 사용하면 테이블 간의 관계를 이해하고 이를 활용하여 데이터를 추출하는 것이 가능해집니다.
INNER JOIN과 OUTER JOIN의 차이점
SQL INNER JOIN과 OUTER JOIN의 차이점은 반환되는 결과의 범위입니다.
INNER JOIN은 두 개의 테이블에서 매칭되는 데이터만 추출하여 새로운 결과 집합을 만듭니다. 즉, INNER JOIN을 사용하면 교집합에 해당하는 결과만 반환됩니다.
반면, OUTER JOIN은 한쪽 테이블에는 있는 데이터와 다른 한쪽 테이블에는 없는 데이터도 포함하여 새로운 결과 집합을 만듭니다. OUTER JOIN은 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN의 세 가지 종류가 있으며, 각각 왼쪽 테이블을 기준으로 오른쪽 테이블에서 매칭되는 데이터, 오른쪽 테이블을 기준으로 왼쪽 테이블에서 매칭되는 데이터, 두 테이블 모두에 있는 데이터와 한쪽에만 있는 데이터를 모두 포함하여 결과를 반환합니다. 즉, OUTER JOIN을 사용하면 합집합에 해당하는 결과가 반환됩니다.
이를 예시로 설명하면, A 테이블과 B 테이블이 있고 A 테이블에는 1, 2, 3의 데이터가 있으며 B 테이블에는 2, 3, 4의 데이터가 있다고 가정해보겠습니다.
- INNER JOIN: A 테이블과 B 테이블에서 매칭되는 2와 3의 데이터만 추출되어 결과로 반환됩니다.
- LEFT OUTER JOIN: A 테이블의 모든 데이터와 B 테이블에서 매칭되는 2와 3의 데이터가 추출되어 결과로 반환됩니다. B 테이블에서 매칭되지 않는 데이터인 1은 NULL 값으로 반환됩니다.
- RIGHT OUTER JOIN: B 테이블의 모든 데이터와 A 테이블에서 매칭되는 2와 3의 데이터가 추출되어 결과로 반환됩니다. A 테이블에서 매칭되지 않는 데이터인 4는 NULL 값으로 반환됩니다.
- FULL OUTER JOIN: A 테이블과 B 테이블의 모든 데이터가 추출되어 결과로 반환됩니다. A 테이블과 B 테이블에서 매칭되는 2와 3의 데이터는 중복되어 반환됩니다. A 테이블에서 매칭되지 않는 데이터인 1과 B 테이블에서 매칭되지 않는 데이터인 4는 NULL 값으로 반환됩니다.
따라서, INNER JOIN은 교집합을 추출하는 데 사용되며, OUTER JOIN은 두 개 이상의 테이블에서 데이터를 추출하는 데 사용되며, 결과에 포함될 수 있는 데이터의 범위가 더 크다는 것이 차이입니다
'데이터분석 > SQL' 카테고리의 다른 글
[금융권 SQL 실무] 집계함수 (COUNT, SUM, AVG, MAX, MIN) (18) | 2023.05.15 |
---|---|
[금융권 SQL 실무] 금융권 SQL 활용 (13) | 2023.05.08 |
[금융권 SQL 실무] Case When 절 (13) | 2023.05.02 |
[금융권 SQL 실무] WHERE 절 (9) | 2023.04.28 |
[금융권 SQL 실무] 서브쿼리(Subquery) (8) | 2023.04.26 |
댓글