[MySQL] SQL JOIN으로 테이블 결합하기 (INNER, OUTER, SELF)
멋쟁이 사자처럼 AI스쿨
데이터리안 Special Lecture : SQL 중급반
[백문이불여일타] 데이터 분석을 위한 중급 SQL - 인프런 | 강의
인프런 누적 수강생 10,000명 이상, 풍부한 온/오프라인 강의 경험을 가진 데이터리안의 SQL 중급 강의. SQL 중급 이론을 배우고, 실습 문제를 함께 풀어봅니다., - 강의 소개 | 인프런...
www.inflearn.com
JOIN이란?
두 개의 테이블을 서로 묶어 하나의 테이블로 만들어 내는 것
데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 연관관계가 있는 결과값을 조회할 때 사용되는데,
보통 SELECT문과 함께 사용된다.
다음과 같은 종류로 나뉜다.
- INNER JOIN(내부 조인 : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
- MySQL에서는 CROSS JOIN = INNER JOIN = JOIN 셋 다 같은 의미로 사용
- OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
- SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.

1. INNER JOIN (내부 조인)
두 테이블을 연결할 때 가장 많이 사용되는 것 동일한 컬럼명을 갖는 컬럼끼리 병합한다.
두 테이블이 동시에 가지고 있는 컬럼만 합치는 교집합 연산
반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼이 필요.
SELECT 조회할 컬럼
FROM 기준 테이블 A
JOIN or INNER JOIN 합칠 테이블 B
ON <조인될 조건>
WHERE 추가 조건
- ON 절과 함께 사용되며, ON의 조건을 만족하는 데이터만 가져온다.
SELECT Sales.*, Countries.Country
FROM Sales
JOIN Countries
ON Sales.CountryID = Countries.ID

2. OUTER JOIN (외부 조인)
한쪽에만 데이터가 있어도 결과가 나온다. 공통되지 않는 행도 함께 병합하는 합집합 연산
MySQL에서는 FULL OUTER JOIN을 지원하지 않으므로 LEFT OUTER JOIN 결과와 RIGHT OUTER JOIN결과를 UNION 하여 사용해야 한다.
- Left Outer Join : 왼쪽 테이블 값을 기준으로 병합
- Right Outer Join : 오른쪽 테이블 값을 기준으로 병합
- Full Outer Join : 두 테이블의 값을 모두 유지
- MySQL 에서는 지원하지 않는 문법
LEFT JOIN
왼쪽 테이블을 기준으로 오른쪽 테이블을 병합한다.
ON 의 조건을 만족하지 않는 경우, 첫 번째 테이블의 필드 값은 그대로 가져오고 두 번째 테이블의 필드 값은 모두 NULL로 표시하여 반환한다.
SELECT 조회할 컬럼
FROM 기준테이블 A
LEFT OUTER JOIN 병합할 테이블 B
ON 조건문
WHERE 추가조건문

RIGHT JOIN
오른쪽 테이블을 기준으로 왼쪽 테이블을 병합한다.
ON 의 조건을 만족하지 않는 경우, 두 번째 테이블의 필드 값은 그대로 가져오고 첫 번째 테이블의 필드 값들을 모두 NULL로 표시하여 반환한다.
SELECT 조회할 컬럼
FROM 테이블 A
RIGHT OUTER JOIN 기준 테이블 B
ON 조건문
WHERE 추가조건문


3. SELF JOIN (자기 자신 조인)
자기 자신 테이블을 JOIN하는 방법
한 테이블 내에서 데이터 사이의 관계성을 살펴보고 싶은 경우에 SELF JOIN을 이용하면 효과적으로 데이터를 뽑아낼 수 있다.
SELECT 조회할 컬럼
FROM 테이블 A AS 별칭 A
INNER JOIN 테이블 A AS 별칭 B
ON 조건문
WHERE 추가 조건문
Reference
[DB] SQL - JOIN문, JOIN 종류 (Inner Join,Natural Join,Outer Join,Cross Join)
1. Join이란? 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다. 2. 기본 구조 1) 일반 SELECT 테이블.컬럼, 테이블.컬
doh-an.tistory.com
[SQL] JOIN 사용법
velog.io
SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)
조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.OUTER JOIN(외부
hongong.hanbit.co.kr