🌱 오늘의 주제 : 테이블 JOIN
🌱 테이블 JOIN
- key값이 연결되어 있는 N개의 테이블의 데이터를 합쳐서 한번에 가져오는 문법
- JOIN 방식은 LEFT JOIN, RIGHT JOIN, INNER JOIN 3가지가 있다.
- JOIN 방식을 명시하지 않으면 기본적으로 INNER JOIN이 된다.
조인 문법 예제
SELECT 테이블명1.*, 테이블명2.*
FROM 테이블명1
JOIN 테이블명2
ON 테이블명1.id = 테이블명2.Id
[where 조건]
🌱 INNER JOIN
- key값이 같은 데이터가 조인되는 모든 테이블에 존재할 경우에만 두 테이블의 결과를 가져온다.
- 즉 모든 테이블의 교집합
🌱 LEFT JOIN(OUTER)
- 맨 좌측 테이블은 전체가 출력되며, 맨 좌측 테이블을 제외한 테이블들은 데이터가 없으면 NULL이 출력된다.
🌱 RIGHT JOIN(OUTER)
- 맨 우측 테이블은 전체가 출력되며, 맨 우측 테이블을 제외한 테이블들은 데이터가 없으면 NULL이 출력된다.
🌱 예제 코드
# JOIN하지 않는 경우
-- 마로비의 판매 물품 리스트 가져오기
select * from `seller` where nickname = '마로비';
select * from `used_goods` where `sellerId` = 1;
# JOIN
-- 마로비의 판매 물품 리스트 가져오기 : 결과 2행
select seller.*, used_goods.*
from seller
join used_goods
on seller.id = used_goods.sellerId
where
seller.nickname = '마로비';
-- 테이블 별명 붙이기
select A.*, B.*
from seller AS A
join used_goods AS B
on A.id = B.sellerId
where
A.nickname = '마로비';
-- 하구루의 판매 물품 리스트 가져오기 : 결과 0행
select A.*, B.*
from seller as A
join used_goods as B
on A.id = B.sellerId
where
A.nickname = "하구루";
# INNER JOIN: 테이블들의 교집합
-- 마로비의 판매 물품 리스트 가져오기 : 결과 2행
select A.*, B.*
from seller AS A
inner join used_goods AS B
on A.id = B.sellerId
where
A.nickname = '마로비';
-- 하구루의 판매 물품 리스트 가져오기 : 결과 0행 => seller는 있으나 used_goods에 없어서 0행
select A.*, B.*
from seller AS A
inner join used_goods AS B
on A.id = B.sellerId
where
A.nickname = '하구루';
# LEFT JOIN(OUTER): 좌측 테이블 전체 - 우측 테이블 NULL 허용
-- 마로비의 판매 물품 리스트 가져오기 : 결과 2행
select A.*, B.*
from seller AS A
left join used_goods AS B
on A.id = B.sellerId
where
A.nickname = '마로비';
-- 하구루의 판매 물품 리스트 가져오기 : 결과 1행 => seller는 있으나 used_goods에 없어서 우측테이블이 NULL 값
select A.*, B.*
from seller AS A
left join used_goods AS B
on A.id = B.sellerId
where
A.nickname = '하구루';
# RIGHT JOIN(OUTER): 좌측 테이블 NULL 허용 - 우측 테이블 전체
-- 하구루의 판매 물품 리스트 가져오기 : 결과 1행 => seller는 있으나 used_goods에 없어서 좌측테이블이 NULL 값
select A.*, B.*
from used_goods AS A
right join seller AS B
on A.sellerId = B.id
where
B.nickname = '하구루';
-- 제목이 바퀴벌레로 시작하는 글을 올린 사람의 닉네임과 매너온도 확인하기
select A.nickname, A.temperature
from seller AS A
left join used_goods AS B -- inner join이나 left join이나 차이 없는 조건이다.
on A.id = B.sellerId
where
B.title like '바퀴벌레%';
'Database' 카테고리의 다른 글
UNIQUE 삭제 후 다시 설정하기. (0) | 2023.05.30 |
---|---|
Mysql Query - SELECT문 (0) | 2023.05.24 |
Database - SELECT문과 다양한 문법 (MySQL) (0) | 2023.03.13 |
Database - Query (MySQL) (0) | 2023.03.13 |
Database - MySQL Workbench 프로그램 사용법 (0) | 2023.03.13 |