패스트캠퍼스 데이터 분석 부트캠프

[SQL 기초 문법] 테이블 합치기, JOIN 6개 유형 작성방법, INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN

쓔! 2024. 4. 10. 01:31

08. 테이블 합치기

테이블 합치기 JOIN
두개의 테이블을 특정 값으로 연결시키는 것!

 

1. INNER JOIN

JOIN 의 기본 형태. JOIN만 적으면 자동으로 INNER JOIN으로 인식됨

두 테이블에 모두 있는 값만 선택해서 합쳐주는 것

 

SELECT 컬럼명

FROM 테이블명1 

(INNER) JOIN 테이블명2

ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼

(연결할 값, 같은 값들이 있는 컬럼을 선택하는 것) 

WHERE 조건식;

 

2. LEFT JOIN / RIGHT JOIN

 

1) LEFT JOIN

왼쪽 테이블에서 선택한 칼럼이 기준이 되어, 해당 값에 해당하는 자료들만 합쳐짐

왼쪽 테이블에 있는 기준값이 오른쪽 테이블에 없다면? NULL로 채워짐

왼쪽 테이블 값이 기준!

 

2) RIGHT JOIN

오른쪽 테이블에서 선택한 칼럼이 기준이 되어, 해당 값에 해당하는 자료들만 합쳐짐

오른쪽 테이블에 있는 기준값이 왼쪽 테이블에 없다면? NULL로 채워짐

오른쪽 테이블 값이 기준!

 

3) 작성방법

 

작성방법은 INNER 조인과 동일함. 대신 INNER 자리에 각각 RIGHT, LEFT 만 작성하면 됨

 

SELECT 컬럼명

FROM 테이블명1 

RIGHT / LEFT JOIN 테이블명2

ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼

(연결할 값, 같은 값들이 있는 컬럼을 선택하는 것) 

WHERE 조건식;

 

3. OUTER JOIN   ▶   UNION

두 테이블에 있는 모든 값 합치기

mysql은 OUTER JOIN이 없음. 대신 LEFTJOIN과 RIGHT JOIN을 연결해서 사용.

 

SELECT 컬럼명

FROM 테이블명1

LEFT JOIN 테이블명2

ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼

UNION
SELECT 컬럼명

FROM 테이블명1

RIGHT JOIN 테이블명2

ON 테이블명1.연결컬럼 = 테이블명2.연결컬럼 ; 

 

4. CROSS JOIN

두 테이블에 있는 모든 값을 각각 합쳐 모든 가능한 조합을 생성함.

즉 첫번째 테이블에 있는 첫번째 로우에, 두번째 테이블에 있는 모든 로우가  한번씩 합쳐저서 1개의 로우가 두번쨰 테이블의 모든 수 만큼 늘어나게 됨. 해당 과정을 첫번째 테이블에 첫번쨰 로우부터 마지막 로우까지 반복하게 됨

결국 로우의 수는 첫번쨰 테이블의 로우 수 x 두번쨰 테이블의 로우 수 만큼 늘어나게 됨

기준열이 필요하지 않기 때문에 ON 절을 작성하지 않음

 

SELECT 컬럼명

FROM 테이블명1

CROSS JOIN 테이블명2 ;

 

5. SELF JOIN

같은 테이블에 있는 값 합치기.

현재 존재하는 칼럼과 값이 순서 그대로 x2. 로우는 그대로. 

 

SELECT 컬럼명

FROM 테이블명1 AS 별명1

INNER JOIN 테이블명1 AS 별명2

ON 별명1.컬럼1 = 별명2.컬럼1

WHERE 조건식 ;