JOIN
JOIN
•
두개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법을 말한다.
•
검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용한다.
•
여러 테이블을 마치 하나의 테이블인 것처럼 활용할 수 있다.
JOIN 을 사용하는 이유
•
데이터를 중복 저장하면 그만큼의 저장공간이 필요하다.
•
중복 저장한 열의 데이터를 수정할 경우, 해당 열을 가진 다른 데이터를 찾아서 모두 수정해야한다.
•
중복을 최소화하면서 다른 테이블과 조합으로 데이터 셋을 만들기 위해서 조인이 필요하다.
JOIN 의 종류
1.
inner join
2.
(left, right, full) outer join
3.
cross join
4.
self join
1 . INNER JOIN
•
조인키에 해당하는 각 테이블의 열 값을 비교해 조건에 맞는 값을 검색한다.
•
A와 B의 교집합
ON vs. WHERE
•
둘다 데이터를 필터링 한다는 점에서는 역할이 비슷해보임
•
ON : 조인할 때 조인 조건을 위해서 사용
•
WHERE : 조인을 완료한 상태에서 조거에 맞는 값을 필터링하기 위해 사용
•
ON 구문을 사용해서 WHERE 와 같은 효과를 낼 수는 있지만, 데이터 매칭 과정에서 오차가 발생할 수 있으므로 반드시 성격을 분리해서 사용해야한다.
2. (left, right, full) OUTER JOIN
•
조인하는 여러 테이블에서 한쪽에 데이터가 있고 한쪽에 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 전부 출력할 때 사용한다.
•
조건에 만족하지 않아도 해당 행을 전부 출력하고자 할 때 사용할 수 있다.
•
3가지 종류가 있다. - LEFT, RIGHT, FULL
•
기준 테이블을 지정해야한다. - LEFT, RIGHT
LEFT JOIN
RIGHT JOIN
FULL OUTER JOIN
•
보통 많이 쓰이지 않는다.
•
양쪽 테이블 간 데이터를 비교할 때, 한쪽에는 있고 한쪽에는 없는 데이터를 찾기 위해서 종종 사용할 수 있다.
3. CROSS JOIN
•
조인에 포함된 테이블의 카티션 곱을 산출한다.
•
각 테이블의 모든 경우의 수를 조합한 데이터가 필요한 경우 사용한다.
•
각각의 컬럼을 서로서로 모두 매치하기 때문에 from 구문에 조인 조건이 없다.
언제 사용되나
•
예를 들면 모든 회원들에게 쿠폰 2종류씩 뿌릴 때! 회원 테이블 X 임시 쿠폰 테이블을 크로스 조인한 결과를 실제 쿠폰 테이블에 insert 하는 방식으로 사용할 수 있다.
4. SELF JOIN
•
같은 테이블을 사용하는 특수한 조인이다.
•
테이블의 행을 같은 테이블 안에 있는 다른 행과 조인한다.
•
계층적인 구조를 테이블화 할 경우 사용한다.
•
반드시 테이블에 alias 명을 사용해서 질의한다.
•
SELF JOIN 개념적인 적으로 별도의 JOIN 구문이 없다.
5. JOIN 시 주의사항
•
outer join 사용시 기준 테이블 순서에 주의한다.
•
on 절과 where 절을 목적에 맞게 반드시 구분한다.
•
outer join 과정에서 행 수가 늘어날 수 있음을 인지한다.
◦
left outer join : 1:1 or N:1 은 문제 없지만
◦
1:N 의 경우 기준 테이블의 데이터가 중복되기 때문에 결과 행수가 늘어날 수 있다.