공통된 컬럼을 조건으로 두개 이상의 테이블을 엮어 결합하는 기능
- 공통된 컬럼을 조건으로 묶는 법
- ON절 : 1개 이상의 공통된 컬럼으로 2개 이상의 테이블 결합 가능
ㄴ 1개 이상의 컬럼으로 데이터를 조합 할 수 있지만, 데이터의 양이 많고, 중간에 데이터가 변경 된 경우에는 on 조건을 여러번 써서, 해당 데이터의 정합성을 최신버전으로 맞출 수 있다.
- 2개의 컬럼 조건으로 데이터 결합 예시
SELECT t1.id, t1.name, t2.age
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.id = t2.id -- on 조건절1: id로 묶음
AND t1.name = t2.name 조건절 2: name으로 묶음
: 두 테이블간 공통된 데이터만 필요할 때
ex) 주문 테이블과 고객 테이블을 조인하여, 주문을 1번이라도 한 고객을 가져오는 방법
SELECT *
FROM orders o
INNER JOIN customers c
ON o.customer_id = c.customer_id;
: 왼쪽 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에 매칭되는 데이터가 있으면 가져온다. (=vlookup 함수와 유사하지만, 공통되는 데이터가 중복 될때, 중복된 데이터를 모조리 다 가져옴)
ex) 주문을 한 고객의 정보를 가져오기
SELECT c.customer_id, c.customer_name, o.order_id, o.order_amount
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id
결과 : left 조인하여 customer_id는 1,2,3으로 유지 되고 중복된 주문건에 대한 정보는 중복되어 나오는 것을 확인 가능
: 양쪽 테이블의 모든 데이터를 가져오고, 매칭되는 값는 표시되며, 매칭 되지 않은 값은 null로 표시
ex) 주문한 고객의 정보와, 주문은 했으나 고객이 아닌(비로그인) 사람의 주문건 수 확인
SELECT *
FROM customers c
FULL OUTER JOIN orders o
ON c.customer_id = o.customer_id;
: 데이터의 모든 컬럼에 중복값이 있을 수 밖에 없다. 테이블들을 엮다 보면 중복 데이터가 있는 테이블끼리 조인시, 중복값을 제거 하지 않으면 중복된 데이터만 나오는 케이스가 있다.