[SQL] JOIN

yezo cha·2021년 7월 25일
0
post-thumbnail

JOIN

둘 이상의 테이블을 연결해서 데이터를 검색하는 방법
서로 연결하려면 적어도 하나의 컬럼공유하고 있어야 한다.
공유하고 있는 컬럼을 PK 또는 FK 값으로 사용한다.

종류

  1. INNER JOIN
    • 기준 테이블과 조인 테이블 모두 데이터가 존재해야 조회됨.
  2. LEFT / RIGHT (OUTER) JOIN
    • 기준 테이블에만 데이터가 존재하면 조회됨.
  3. OUTER JOIN

INNER JOINLEFT / RIGHT (OUTER) JOIN 사용 방법을 알아두자.
오라클에는 OUTER JOIN이 있지만, MySQL에는 없기 때문에 LEFT JOIN + RIGHT JOIN 해준다

INNER JOIN : 공통부분만 SELECT

SELECT *
FROM emp AS a
INNER JOIN dept AS b
ON a.deptno = b.deptno;

INNER JOIN은 기준 테이블(emp), 조인 테이블(dept)에 조인 컬럼(deptno)에 해당하는 값이 모두 존재하는 경우에만 데이터가 조회된다.

LEFT JOIN

SELECT *
FROM emp AS a
LEFT OUTER JOIN dept AS b
ON a.deptno = b.deptno;

아우터 조인에서 LEFT, RIGHT기준 테이블을 지정하는 것이고, 위의 쿼리에서 LEFT OUTER JOIN의 기준 테이블은 emp 테이블이다.

OUTER JOIN의 경우 조인 테이블(dept)에 데이터가 없어도 기준 테이블(emp)의 모든 데이터가 조회되고 조인 테이블(dept)에 데이터가 존재할 경우 해당 데이터를 참조할 수 있다.

RIGHT JOIN

SELECT *
FROM emp AS a
RIGHT OUTER JOIN dept AS b
ON a.deptno = b.deptno;

LEFT OUTER JOIN과 개념은 동일하지만 RIGHT에 해당하는 dept 테이블이 기준 테이블이 된다.
LEFT OUTER JOIN의 결과와 다르게 dept 테이블의 모든 데이터가 조회되고 조인 테이블(emp)의 테이블에 데이터가 있을 경우 해당 값을 표시한다.

대부분의 경우에서 LEFT OUTER JOIN을 많이 사용하지만 상황에 따라 RIGHT OUTER JOIN을 사용할 수 있으니 꼭 이해하고 있어야 한다.

OUTER JOIN을 사용하는 이유는 기존 테이블의 데이터를 누락 없이 모두 조회하고 참조 테이블의 값이 있을 경우 해당 값을 사용하기 위해서다.

OUTER JOIN

SELECT *
FROM emp AS a
FULL OUTER JOIN dept AS b
ON a.deptno = b.deptno;

FULL OUTER JOIN은 두 개의 테이블을 합쳐서 조회한다고 생각하자.
JOIN이 될 경우 해당 값을 표시하고 JOIN이 안되면 NULL로 표시하고 두 테이블의 모든 데이터가 조회된다.
자주 사용하지는 않는다.

CROSS JOIN

CROSS JOININNER JOIN, OUTER JOIN과 약간의 차이가 존재한다.
이너 조인과 아우터 조인이 두 테이블 간의 특정 기준에 의해 데이터 결합의 결과를 보여주는 방식이었다면, 크로스 조인특정 기준 없이 두 테이블 간에 가능한 모든 경우의 수에 대한 결합을 결과로 보여주는 방식이다.

쿼리를 작성할 때에도 특정한 기준이 필요없기 때문에 ON절이 없어지게 된다.

SELECT a.ENAME, b.ENAME
FROM emp AS a
CROSS JOIN dept AS b;

조인(JOIN)이란 무엇일까?, 기초적인 조인들!

profile
(ง •̀_•́)ง

0개의 댓글