원하는 데이터가 서로 다른 테이블에 있는 경우에는 서로 다른 테이블을 합쳐서 봐야 합니다. MySQL에서 테이블을 합칠 때 사용하는 키워드는 JOIN입니다. JOIN에는 여러 가지 방식이 있는데 각 방식의 방법과 특징에 대해 정리하겠습니다.
JOIN의 종류
JOIN은 같은 의미를 가지는 칼럼의 값을 기준으로 테이블을 합칩니다. 조인을 하기 위해서는 선행 조건이 필요합니다. 두 테이블 간에 관계를 맺는 데 사용할 칼럼, 즉 두 테이블 간 연결고리 역할을 할 칼럼이 있어야 합니다. 일반적으로 테이블 간 연결고리 칼럼의 이름과 데이터형은 두 테이블 모두 동일하게 만듭니다. 칼럼 이름을 다르게 사용하기도 하지만 데이터형은 같아야 합니다.
JOIN에는 INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN의 6가지 방식이 있습니다. 각 조인의 내용에 대해서 좀 더 자세히 살펴보겠습니다.
INNER JOIN (양 테이블 교집합)
INNER JOIN은 두 테이블 모두에 있는 값만 합칩니다. 기본 JOIN으로 JOIN만 적용 시에 자동으로 INNER JOIN으로 인식 됩니다. 쿼리 문법은 아래와 같습니다.
SELECT [컬럼 이름]
FROM [테이블 A 이름]
INNER JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]
WHERE 조건식;
LEFT JOIN, RIGHT JOIN (한쪽을 기준으로 테이블 합치기)
LEFT JOIN은 왼쪽 테이블에 있는 값만 합칩니다. RIGHT JOIN은 오른쪽 테이블에 있는 값만 합칩니다. 쿼리 문법은 아래와 같습니다. 아래 쿼리 문법에서 LEFT 테이블은 테이블 A이고 RIGHT 테이블은 테이블 B입니다. 공통인 값이 있으면 해당하는 열을 가져오고 공통인 값이 없으면 NULL을 가져옵니다.
# LEFT JOIN
SELECT [컬럼 이름]
FROM [테이블 A 이름]
LEFT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]
WHERE 조건식;
# RIGHT JOIN
SELECT [컬럼 이름]
FROM [테이블 A 이름]
RIGHT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]
WHERE 조건식;
OUTER JOIN, CROSS JOIN, SELF JOIN (다양한 방식으로 테이블 합치기)
OUTER JOIN은 두 테이블에 있는 모든 값을 합칩니다. MySQL에는 OUTER JOIN 키워드가 없습니다. 따라서 LEFT JOIN과 RIGHT JOIN 한 테이블을 UNION이라는 키워드로 합쳐주는 작업이 필요합니다. UNION은 두 쿼리의 결과를 중복을 제외하고 합쳐서 보여주는 연산자입니다. 쿼리 문법은 아래와 같습니다.
SELECT [컬럼 이름]
FROM [테이블 A 이름]
LEFT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]
UNION
SELECT [컬럼 이름]
FROM [테이블 A 이름]
RIGHT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]
CROSS JOIN은 두 테이블에 있는 모든 값을 각가 합칩니다. 쿼리 문법은 아래와 같습니다. ON 키워드는 없어도 됩니다.
SELECT [컬럼 이름]
FROM [테이블 A 이름]
CROSS JOIN [테이블 B 이름]
WHERE 조건식;
SELF JOIN은 같은 테이블에 있는 값을 합칩니다. 쿼리 문법은 아래와 같습니다. 별명을 사용하여 t1과 t2를 지정해주어야 합니다. 결과는 테이블의 같은 열이 두 번 반복됩니다.
SELECT [컬럼 이름]
FROM [테이블 A 이름] AS t1
INNER JOIN [테이블 A 이름] AS t2
ON t1.[컬럼 A 이름] = t2.[컬럼 B 이름]
WHERE 조건식;
정리 소감
개인적으로 데이터 분석을 위해 수집한 데이터에 원하는 정보가 없어서 다른 테이블을 생성 후 조인하는 방식으로 원하는 데이터를 합쳤습니다. 하지만 많은 양의 데이터라 조인을 하기 위해서 많은 시간이 걸리는 것이 단점이긴 합니다. 따라서 원하는 데이터들을 잘 정의하여 수집 단계에서 최적화하는 것이 효율적인 데이터 분석에 도움이 되는 것 같습니다. 이번 정리를 통해서 JOIN을 통해서 MySQL에서 여러 테이블 합치는 방법을 알게 되어 유익했습니다.
'데이터 분석 및 업무 자동화' 카테고리의 다른 글
KB부동산 매수우위지수와 매매증감률 파워비아이 상관관계 분석 (0) | 2022.03.19 |
---|---|
Power BI 시간 인텔리전스 사용을 위한 날짜 테이블 만들기 (CALENDAR, CALENDARAUTO) (0) | 2022.03.18 |
POWER BI 입문 추천 책 리뷰 <데이터 시각화와 탐색 WITH POWER BI> (1) | 2022.03.12 |
2회독 후 남기는 점프 투 파이썬 후기 <Do it! 점프 투 파이썬> (0) | 2022.03.11 |
어려운 파이썬 정규식, 코딩 초보자는 이것만 익히자 (0) | 2022.03.07 |
댓글