본문 바로가기
배우기/SQL

SQL 조인(INNER / LEFT / RIGHT JOIN) 알아보기_MySQL

by 인사잘해 2022. 4. 24.

안녕하세요!

 

 

MySQL에서 JOIN을 직접 실행하며 공부해보았습니다.

본문의 예시는 일부만 첨부하였습니다.

 

# JOIN 의 특징

- INNER JOIN 은 INNER 생략 가능,  조건에 해당되는 데이터만 조인 됨.

- LEFT / RIGHT OUTER JOIN 은 OUTER 생략 가능하며,
  LEFT 또는 RIGHT 는 JOIN 할 테이블의 기준을 지정한다.
  기준이 되는 테이블에서는 데이터가 전부 포함되며,

  조인 대상 테이블에서는 조건에 해당되는 데이터만 조인 됨.

- ON 절의 조건에 해당하는 데이터 간의 조인

- ON 절의 조건은 = / != / and / or / between / in / not in 등 사용 가능


# 테이블 예시

user1 TABLE
user2 TABLE


# INNER JOIN 예시

 

1) user1 TABLE 과 user2 TABLE 의 number 데이터가 동일한 조건에 대해 조인

select *
from user1
  join user2 
  on user1.number = user2.number

number가 동일한 테이블 조인

2) user1 TABLE 과 user2 TABLE 의 number, job 데이터가 동일한 조건에 대해 조인

select *
from user1
  join user2 
  on user1.number = user2.number
  and user1.job = user2.job ;

number, job이 동일한 테이블 조인

3) user1 TABLE 과 user2 TABLE 의 number 가 동일하며

  user2 TABLE 에서 age 가 40 - 50 사이인 조건에 해당하는 데이터 조인

select *
from user1
  join user2 
  on user1.number = user2.number
  and user2.age between 40 and 50

number 는 동일, age 는 다름

만약, and 절이 user1.age between 40 and 50 이었다면 number 가 2인 데이터는 포함 안 됨.

(아래 이미지 참고)

 

4) user1 TABLE 의 job 이 학생인 데이터에 대해 조인

select *
from user1
  join user2
  on user1.job = '학생'

user1 TABLE 에서 job 이 학생인 1번 데이터에 user2 TABLE 전체 데이터가 조인


# LEFT JOIN 예시

 

1) user1 TABLE 과 user2 TABLE 의 job 이 동일한 데이터를 LEFT 기준으로 조인

  (여기서 LEFT 의 기준은 FROM 절에 먼저 쓰인 테이블 user1) 

select *
from user1
  left join user2
  on user1.job = user2.job

user1 테이블을 기준으로 number가 정렬되어 있다.

2) user1 TABLE 과 user2 TABLE 의 number 가 동일하며

  user1 TABLE 에서 age 가 40 - 50 사이인 조건에 해당하는 데이터 조인

select *
from user1
  left join user2 
  on user1.number = user2.number
  and user1.age between 40 and 50

user1 TABLE 기준 user1 의 age 가 40 - 50 사이인 데이터에만 user2 TABLE 조인


# RIGHT JOIN 예시

 

1) user1 TABLE 과 user2 TABLE 의 job 이 동일한 데이터를 RIGHT 기준으로 조인

  (여기서 RIGHT 의 기준은 JOIN 절에 쓰인 테이블 user2)

select *
from user1
  right join user2
  on user1.job = user2.job

user2 테이블을 기준으로 number가 정렬되어 있다

2) user1 TABLE 과 user2 TABLE 의 number 가 동일하며

  user2 TABLE 에서 age 가 40 - 50 사이인 조건에 해당하는 데이터 조인

select *
from user1
  right join user2 
  on user1.number = user2.number
  and user2.age between 40 and 50

user2 TABLE 기준 user2 의 age 가 40 - 50 사이인 데이터에만 user1 TABLE 조인

 


INNER / LEFT / RIGHT JOIN 모두 ON 절의 조건대로 테이블이 조인됨을 알 수 있다!

 

 

부족한 부분이 있다면 조언 부탁드립니다.

감사합니다!

댓글