안녕하세요!
MySQL에서 JOIN을 직접 실행하며 공부해보았습니다.
본문의 예시는 일부만 첨부하였습니다.
# JOIN 의 특징
- INNER JOIN 은 INNER 생략 가능, 조건에 해당되는 데이터만 조인 됨.
- LEFT / RIGHT OUTER JOIN 은 OUTER 생략 가능하며,
LEFT 또는 RIGHT 는 JOIN 할 테이블의 기준을 지정한다.
기준이 되는 테이블에서는 데이터가 전부 포함되며,
조인 대상 테이블에서는 조건에 해당되는 데이터만 조인 됨.
- ON 절의 조건에 해당하는 데이터 간의 조인
- ON 절의 조건은 = / != / and / or / between / in / not in 등 사용 가능
# 테이블 예시
# INNER JOIN 예시
1) user1 TABLE 과 user2 TABLE 의 number 데이터가 동일한 조건에 대해 조인
select *
from user1
join user2
on user1.number = user2.number
2) user1 TABLE 과 user2 TABLE 의 number, job 데이터가 동일한 조건에 대해 조인
select *
from user1
join user2
on user1.number = user2.number
and user1.job = user2.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
만약, and 절이 user1.age between 40 and 50 이었다면 number 가 2인 데이터는 포함 안 됨.
(아래 이미지 참고)
4) user1 TABLE 의 job 이 학생인 데이터에 대해 조인
select *
from user1
join user2
on user1.job = '학생'
# LEFT JOIN 예시
1) user1 TABLE 과 user2 TABLE 의 job 이 동일한 데이터를 LEFT 기준으로 조인
(여기서 LEFT 의 기준은 FROM 절에 먼저 쓰인 테이블 user1)
select *
from user1
left join user2
on user1.job = user2.job
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
# RIGHT JOIN 예시
1) user1 TABLE 과 user2 TABLE 의 job 이 동일한 데이터를 RIGHT 기준으로 조인
(여기서 RIGHT 의 기준은 JOIN 절에 쓰인 테이블 user2)
select *
from user1
right join user2
on user1.job = user2.job
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
INNER / LEFT / RIGHT JOIN 모두 ON 절의 조건대로 테이블이 조인됨을 알 수 있다!
부족한 부분이 있다면 조언 부탁드립니다.
감사합니다!
'배우기 > SQL' 카테고리의 다른 글
SQL_WINDOW FUNCTION(윈도우 함수)_순위/순서(RANK, DENSE_RANK, ROW_NUMBER)_MySQL (0) | 2022.04.28 |
---|---|
HackerRank - New Companies (SELECT 절 서브쿼리)_MySQL (0) | 2022.04.24 |
HackerRank - Contest Leaderboard(조인, 서브쿼리)_MySQL (0) | 2022.04.21 |
HackerRank - Placements(조인, 서브쿼리/with 문)_MySQL (0) | 2022.04.21 |
Leetcode - 180.Consecutive Numbers(조인)_MySQL (0) | 2022.04.18 |
댓글