JOIN은 UNION 연산과 같이 두 개 이상의 테이블 데이터를 결합한다는 특징을 가지고 있지만, 엄연한 다른 결과를 출력한다.
UNION은 테이블의 행을 수직으로 결합하지만, JOIN은 테이블의 행과 열을 수직/수평으로 결합한다.
UNION은 각 테이블의 칼럼컬럼 속성이 같아야 하지만, JOIN은 각 테이블의 칼럼컬럼 속성이 같지 않아도 집합이 가능하다.
두 테이블의 모든 데이터 컬럼 중 같은 데이터 행을 조회한다.
select table01.컬럼1, table02.컬럼2
from table01
inner outer join table02
on <조인 조건>
where <일반 조건>
왼쪽 테이블의 모든 데이터를 기준으로 오른쪽 컬럼 데이터와 일치하는 행을 조회한다.
오른쪽 컬럼 데이터와 일치하는 항목이 없다면 테이블의 속성값에는 NULL값을 반환
select table01.컬럼1, table02.컬럼2
from table01
left outer join table02
on <조인 조건>
where <일반 조건>
오른쪽 테이블의 모든 데이터를 기준으로 왼쪽 컬럼 데이터와 일치하는 행을 조회한다.
왼쪽 컬럼 데이터와 일치하는 항목이 없다면 테이블의 속성값에는 NULL값을 반환
select table01.컬럼1, table02.컬럼2
from table01
right outer join table02
on <조인 조건>
where <일반 조건>
왼쪽, 오른쪽 테이블의 모든 데이터 행을 조회한다.
일치하는 항목이 없다면 테이블의 속성값에는 NULL값이 반환
하지만, MySQL에서는 FULL OUTER JOIN 연산을 사용할 수 없다.
때문에 UNION 연산자와 LEFT JOIN, RIGHT JOIN을 사용하여 FULL OUTER JOIN 기능을 대체한다.
select table01.컬럼1, table02.컬럼2
from table01
full outer join table02
on <조인 조건>
where <일반 조건>
select table01.컬럼1, table02.컬럼2
from table01
left outer join table02
on <조인 조건>
where <일반 조건>
union
select table01.컬럼1, table02.컬럼2
from table01
right outer join table02
on <조인 조건>
where <일반 조건>
일반적인 JOIN 방식과는 조금 다른 방식으로 JOIN연산자를 사용하지 않는다는 특징을 가지고 있다.
일반적인 JOIN문과 다르게 JOIN하는 대상이 자기 자신이라는 점으로 한 테이블 내의 컬럼끼리 연결하는 조인이다.
때문에 FROM절에 2개의 테이블을 입력해야 한다.
select table01.컬럼1, table02.컬럼2
from table01, table02
where table01.컬럼1 = table02.컬럼2 //두 테이블의 컬럼끼리 연결할 수 있도록 조건 기술