[Oracle] JOIN

JOIN 이란?

여러 개의 테이블을 연결하여 하나의 테이블처럼 출력하는 방식

 

JOIN의 종류

1. JOIN

2. INNER JOIN

3. OUTER JOIN

 

다이어그램

 

JOIN 연산 (SQL -99)

1. NATURAL JOIN

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
	DEPTNO, D.DNAME, D.LOC
FROM EMP E NATURAL JOIN DEPT D
ORDER BY DEPTNO, E.EMPNO;

기준 열인 DEPTNO는 테이블 명을 명시하지 않는다.

조인 후 DEPTNO가 같은 값들만 출력

2. JOIN ~ USING

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
	DEPTNO, D.DNAME, D.LOC
FROM EMP E JOIN DEPT D USING (DEPTNO)
ORDER BY DEPTNO, E.EMPNO;

NETURAL JOIN과 달리 기준열을  명시하여 사용한다. 

 

3. JOIN ~ ON 

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
	E.DEPTNO, D.DNAME, D.LOC
FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
ORDER BY DEPTNO, E.EMPNO;

가장 많이 사용되는 방법으로 JOIN의 조건을 명시하여 사용한다.

 

4. LEFT OUTER JOIN ON 

SELECT E1.EMPNO, E1.ENAME, E1.MGR,
		E2.EMPNO AS MGR_EMPNO,
        E2.ENAME AS MGR_ENAME
FROM EMP E1 LEFT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
ORDER BY E1.EMPNO;

E1에 대해 null값을 포함해서 출력

 

5. RIGHT OUTER JOIN ON

SELECT E1.EMPNO, E1.ENAME, E1.MGR,
		E2.EMPNO AS MGR_EMPNO,
        E2.ENAME AS MGR_ENAME
FROM EMP E1 RIGHT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
ORDER BY E1.EMPNO;

E2에 대해 null값 포함

 

6. FULL OUTER JOIN ON

SELECT E1.EMPNO, E1.ENAME, E1.MGR,
		E2.EMPNO AS MGR_EMPNO,
        E2.ENAME AS MGR_ENAME
FROM EMP E1 FULL OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
ORDER BY E1.EMPNO;

null값도 전부 출력

'데이터베이스 > Oracle' 카테고리의 다른 글

[Oracle] 계층형 쿼리  (2) 2024.03.07
[Oracle] docker oracle 설치  (0) 2023.07.11
[Oracle] Trigger 연습  (0) 2023.04.13
[Oracle] 서브 쿼리  (0) 2023.04.07
Oracle 설치 및 SCOTT 계정 활성화  (0) 2023.04.06