[TIL]JOIN

썹스·2024년 2월 9일

SQL

목록 보기
6/17

JOIN

JOIN은 UNION 연산과 같이 두 개 이상의 테이블 데이터를 결합한다는 특징을 가지고 있지만, 엄연한 다른 결과를 출력한다.

UNION과 JOIN의 차이

UNION은 테이블의 행을 수직으로 결합하지만, JOIN은 테이블의 행과 열을 수직/수평으로 결합한다.

UNION은 각 테이블의 칼럼컬럼 속성이 같아야 하지만, JOIN은 각 테이블의 칼럼컬럼 속성이 같지 않아도 집합이 가능하다.

INNER JOIN

두 테이블의 모든 데이터 컬럼 중 같은 데이터 행을 조회한다.

select table01.컬럼1, table02.컬럼2
from table01
inner outer join table02
on <조인 조건>
where <일반 조건>

LEFT JOIN

왼쪽 테이블의 모든 데이터를 기준으로 오른쪽 컬럼 데이터와 일치하는 행을 조회한다.
오른쪽 컬럼 데이터와 일치하는 항목이 없다면 테이블의 속성값에는 NULL값을 반환

select table01.컬럼1, table02.컬럼2
from table01
left outer join table02
on <조인 조건>
where <일반 조건>

RIGHT JOIN

오른쪽 테이블의 모든 데이터를 기준으로 왼쪽 컬럼 데이터와 일치하는 행을 조회한다.
왼쪽 컬럼 데이터와 일치하는 항목이 없다면 테이블의 속성값에는 NULL값을 반환

select table01.컬럼1, table02.컬럼2
from table01
right outer join table02
on <조인 조건>
where <일반 조건>

FULL OUTER JOIN

왼쪽, 오른쪽 테이블의 모든 데이터 행을 조회한다.
일치하는 항목이 없다면 테이블의 속성값에는 NULL값이 반환

하지만, MySQL에서는 FULL OUTER JOIN 연산을 사용할 수 없다.
때문에 UNION 연산자와 LEFT JOIN, RIGHT JOIN을 사용하여 FULL OUTER JOIN 기능을 대체한다.

  • ex) 일반적인 FULL OUTER JOIN 문법 (MySQL에서는 사용 불가)
select table01.컬럼1, table02.컬럼2
from table01
full outer join table02
on <조인 조건>
where <일반 조건>
  • ex) UNION, LEFT JOIN, RIGHT JOIN을 사용한 방법
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 <일반 조건>

SELF JOIN

일반적인 JOIN 방식과는 조금 다른 방식으로 JOIN연산자를 사용하지 않는다는 특징을 가지고 있다.

일반적인 JOIN문과 다르게 JOIN하는 대상이 자기 자신이라는 점으로 한 테이블 내의 컬럼끼리 연결하는 조인이다.
때문에 FROM절에 2개의 테이블을 입력해야 한다.

select table01.컬럼1, table02.컬럼2
from table01, table02
where table01.컬럼1 = table02.컬럼2  //두 테이블의 컬럼끼리 연결할 수 있도록 조건 기술
profile
코린이

0개의 댓글