INNER JOIN, OUTER JOIN, CROSS JOIN

Yoon·2023년 3월 30일
0

개념

이너 조인(INNER JOIN) : 기준 테이블과 조인 테이블 모두 데이터가 존재해야 조회됨
아우터 조인(OUTER JOIN) : 기준 테이블에만 데이터가 존재하면 조회 됨


이너 조인 (INNER JOIN)

SELECT a.empno,
	   a.ename,
       a.job,
       a.mgr,
       a.deptno,
       b.dname
FROM emp AS a
INNER JOIN DEPT AS b
	ON a.deptno = b.deptno

이 방법 말고도, where로 조건을 거는 방법이 있다.

SELECT a.empno,
	   a.ename,
       a.job,
       a.mgr,
       a.deptno,
       b.dname
FROM emp a, dept b
WHERE a.deptno = b.deptno

이너조인 시 어느 방법을 사용해도 상관이 없다. 다만 아우터 조인시에는 조건의 위치와 순서가 중요함.

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

emp테이블 "KING"의 deptno "90"은 dept 테이블에 존재하지 않기 때문에 조회되지 않는다.


LEFT 아우터 조인 (LEFT OUTER JOIN)

SELECT a.empno,
	   a.ename,
       a.job,
       a.mgr,
       a.deptno,
       b.dname
FROM emp AS a
LEFT OUTER JOIN dept AS b
ON a.deptno = b.deptno

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

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

EMP테이블 "KING"의 deptno "90"은 DEPT 테이블에 존재하지 않아도 조회가 되지만, dname은 참조할 수 없기 때문에 NULL로 표시가 된다.


RIGHT 아우터 조인 (RIGHT OUTER JOIN)

SELECT a.empno,
	   a.ename,
       a.job,
       a.mgr,
       a.deptno,
       b.dname
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을 사용할 수 있다.

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

FULL 아우터 조인 (FULL OUTER JOIN)

SELECT a.empno,
	   a.ename,
       a.job,
       a.mgr,
       a.deptno,
       b.dname
FROM emp AS a
FULL OUTER JOIN dept AS b
ON a.deptno = b.deptno

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


크로스 조인 (CROSS JOIN)

SELECT a.empno
     , a.ename
     , a.job
     , a.mgr
     , a.deptno
     , b.dname
  FROM emp AS a
  CROSS JOIN dept AS b

크로스 조인은 기준 테이블(emp)의 행을 조인 테이블(dept) 행 만큼 증가를 시킨다.


profile
나의 공부 일기

0개의 댓글