| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 프로그래머스 #x 사이의 개수 #알고리즘 #자바 #Java #코린이 #개발자 #study
- 프로그래머스 #배열만들기 5 #알고리즘 #study #Java #코린이 #개발자 #성장 #공부
- 프로그래머스 #할 일 목록 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 코린이 #개발자 #study
- 프로그래머스 #날짜 비교하기 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #길이에 따른 연산 #알고리즘 #자바 #Java #코린이 #개발자 #study #취준
- 프로그래머스 #수열과 구간 쿼리1 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #조건에 맞게 수열 변환하기 1 #알고리즘 #자바 #Java #코린이 #개발자 #study #취준
- 프로그래머스 #세로 읽기 #알고리즘 #개발자 #코린이 #study #성장 #Java #자바
- 프로그래머스 #조건에 맞는 개발자 찾기 #MySQL #쿼리문 #알고리즘 #코린이 #개발자 #study #취준
- 프로그래머스 #부분 문자열 이어 붙여 문자열 만들기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #조건별로 분류하여 주문상태 출력하기 #MySQL #쿼리문 #알고리즘 #코린이 #개발자 #study #취준
- 파이썬 #input() #sys.stdin.readline() #공부 #study
- 프로그래머스 #등차수열의 특정한 항만 더하기 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부
- 프로그래머스 #알고리즘 #ad 제거하기 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #오랜 기간 보호한 동물(1) #알고리즘 #MySQL #DB #쿼리문 #개발자 #study #성장 #코린이
- 프로그래머스 #1로 만들기 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #소수 만들기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #합성수 찾기 #알고리즘 #Java #자바 #stiudy #코린이 #개발자 #공부 #성장
- 프로그래머스 #배열에서 문자열 대소문자 변환하기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #배열의 원소만큼 추가하기 #알고리즘 #코린이 #개발자 #study #취준
- 프로그래머스 #카테고리 별 도서 판매량 집계하기 #알고리즘 #쿼리문 #MySQL #코린이 #개발자 #study #취준
- 프로그래머스 #있었는데요 없었습니다 #DB #MySQL #알고리즘 #쿼리문 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #간단한 식 계산하기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #중복된 문자 제거 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #배열 회전시키기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #조건에 맞는 사용자와 총 거래금액 조회하기 #알고리즘 #Mysql #DB #쿼리문 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #푸드 파이트 대회 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 백준 #
- 프로그래머스 #문자열 뒤집기 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부 #성장
- Today
- Total
luke
[MySQL] - JOIN(OUTTER JOIN) (LEFT JOIN, RIGHT JOIN, FULL JOIN) 본문
[MySQL] - JOIN(OUTTER JOIN) (LEFT JOIN, RIGHT JOIN, FULL JOIN)
luke-king 2024. 5. 11. 19:38
[MySQL] - JOIN(OUTTER JOIN) (LEFT JOIN, RIGHT JOIN, FULL JOIN)
JOIN 이란?
- 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어내는 것을 말한다.
- INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
- OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
- CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다.
- SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.
이렇게 총 4가지의 종류 JOIN이 있다.
이번 시간에는 OUTER JOIN (내부 조인)에 대해 정리해보려고 한다.
OUTTER JOIN(외부 조인)

OUTER JOIN은 위 그림과 같이 합집합, 차집합 이 떠오를 것이다.
OUTER JOIN 또한 INNER JOIN과 같이 두 테이블의 정보를 가지고 온다.
하지만 INNER JOIN과 다른 점은
1. 두 테이블 간의 교집합이 되는 데이터뿐만 아니라 해당되지 않는 값까지 가져온다.
2. 드라이빙 테이블(처음으로 가져오는 기준이 되는 테이블)이 필요하다.
그럼 LFT(OUTER) JOIN 부터 보겠다.
LEFT(OUTER) JOIN
<a_table>

<b_table>

위 두개의 a, b 테이블이 있다 각각의 칼럼에 값이 있는 것을 확인할 수 있다.
LEFT JOIN은 기준 테이블을 왼쪽에 두고, OUTER JOIN을 수행하는 것이다.
그럼 쿼리문 작성 한 뒤 결과값이 어떻게 나오는지 보겠다.
<쿼리문>
select * from a_table
left join b_table
on a_table.id = b_table.id;
(쿼리문 작성 시 OUTER는 생략할 수 있다.)
<결과>

결과를 보면 a_table을 기준으로 설정해 기준 테이블이다. 이 기준 테이블에 연결고리인 컬럼 id를 가지고
b_table이 붙는다. 생각해 보면 INNER JOIN 했을 때와 비슷하다. 하지만 INNER JOIN을 했을 때는 컬럼id 값이 일치한 값들만 나왔는데 지금은 모든 값들이 나온 걸 확인할 수 있다.
결과 사진을 보면 a_table이 기준 테이블이므로 b_table과 같지 않은 값들 또는 없는 값들은 null값으로 나온다.
RIGHT(OUTER) JOIN
이번에는 RIGHT(OUTER)JOIN 에 대해 알아보겠다.
RIGHT(OUTER)JOIN은 LEFT(OUTER)JOIN 과 같지만 기준 테이블만 다르다고 생각하면 된다.
즉 기준 테이블을 오른쪽에 두는 것이다.
그럼 쿼리문 작성 한 뒤 결과값이 어떻게 나오는지 보겠다.
<쿼리문>
select * from a_table
right join b_table
on a_table.id = b_table.id;
(쿼리문 작성 시 OUTER는 생략할 수 있다.)
<결과>

결과는 위 LEFT(OUTER)JOIN과 다르게 a_table의 6,7번 값이 나오지 않고 5번까지 나온 걸 확인할 수 있다.
왜 그런 걸까? 이유는 간단하다 기준테이블을 오른쪽에 있는 b_table이기 때문에 a_table과 다르게 id값이 5까지 있으므로
총 5개를 출력한다.
FULL(OUTER) JOIN
이번엔 FULL(OUTER)JOIN 에 대해 알아보겠다.
FULL(OUTER)JOIN은 그림과 같이 LEFT, RIGHT 모두 합한 결과를 보여주는 거라 생각하면 된다.
그럼 쿼리문 작성 한 뒤 결과값이 어떻게 나오는지 보겠다.
<쿼리문>
select * from a_table
left join b_table
on a_table.id = b_table.id
union
select * from a_table
right join b_table
on a_table.id = b_table.id;
(쿼리문 작성 시 OUTER는 생략할 수 있다.)
<결과>

결과 사진을 보면 a_table, b_table의 값들이 모두 나온 걸 확인할 수 있다.
하지만 필자는 MySQL을 UNION을 사용했다. FULL(OUTER)JOIN과 다르지 않다. 다만 MySQL에서 FULL(OUTER)JOIN 을 지원하지 않아 UNION을 사용해야 한다.
(공부한 내용들을 정리하며 글을 써봤지만 테이블들의 값들을 조금 더 쉽게 나타낼 수 있었으면 좋았을 텐데 그러지 못해 아쉽다... 이 글을 보고 헷갈리셨다면 죄송하고 궁금한 게 있으면 댓글 남겨주세요!)
'DB > MySQL' 카테고리의 다른 글
| [MySQL] - SELECT, WHERE 사용 (0) | 2024.05.15 |
|---|---|
| [MySQL] - SQL 분류 (DML, DDL, DCL, TCL) (0) | 2024.05.14 |
| [MySQL] - JOIN (INNER JOIN) (0) | 2024.05.10 |
| [SQL] - WHERE (조건,다중 조건) (or, and, not) (2) | 2024.04.18 |
| [SQL] - ALTER TABLE 원하는 특정 위치에 컬럼 추가 (0) | 2024.03.27 |